如何禁用从URL直接访问视图?

时间:2019-09-08 18:58:19

标签: asp.net-core

我在ASP网络核心应用程序中有两个视图。第一个视图称为客户,第二个视图称为付款。我想禁用用户可以通过在浏览器中输入网址“ https://mywebsite/Payment”来获得直接访问权限。

我希望将用户重定向到查看称为客户的帐户,如果用户试图直接访问以查看称为付款的帐户。

我该怎么做。我不知道。

1 个答案:

答案 0 :(得分:0)

您可以创建一个过滤器,如下所示:

 public class NoDirectAccessAttribute:ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var canAccess = false;

        //check the refer
        var referer = context.HttpContext.Request.Headers["Referer"].ToString();
        if(!string.IsNullOrEmpty(referer))
        {
            var request = context.HttpContext.Request;
            var rUri = new System.UriBuilder(referer).Uri;
            if(request.Host.Host==rUri.Host && request.Host.Port==rUri.Port && request.Scheme==rUri.Scheme)
            {
                canAccess = true;
            }
        }

        // ... check other requirements

        if (!canAccess)
        {
            context.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "Index", area = "" }));
        }
    }
}

然后,您可以将NoDirectAccess属性应用于特定的操作

[NoDirectAccess]
public IActionResult Privacy()
{
   return View();
}