我在ASP网络核心应用程序中有两个视图。第一个视图称为客户,第二个视图称为付款。我想禁用用户可以通过在浏览器中输入网址“ https://mywebsite/Payment”来获得直接访问权限。
我希望将用户重定向到查看称为客户的帐户,如果用户试图直接访问以查看称为付款的帐户。
我该怎么做。我不知道。
答案 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();
}