Asp.net mvc Authentication filter overide default reditect
在我的 MVC 5 应用程序中,我应用了一些角色过滤器,例如:
1 | [Authorize(Roles ="ManageRoles")] |
现在,如果用户没有访问此角色的权限,它会将我重定向到登录页面。这在我的应用程序中是不正确的,因为我想显示一条错误消息,说明您没有访问权限。
如果用户无权访问过滤器,我应该在哪里更改会发生什么?
我必须实现自定义过滤器吗?如果可能,我想尝试使用 redirectTo 操作,以便在不同情况下有不同的错误页面。
MVC5 实际上已经开始解决这个问题。除了授权过滤器之外,它们现在还包括身份验证过滤器。这些文档很少,但我的直觉是,这是将身份验证与授权分开的第一次尝试(到目前为止,ASP.NET 将两者混淆了)
我的想法是,身份验证过滤器将用于控制用户是否登录,而授权过滤器将用于控制您可以访问的内容。但是,这似乎还没有完全实现。
Use Custom Authorize Attribure - Ben Scheirman 或 Ben Cull\\'s answer in this thread。
还检查 Mark\\ 对类似问题的回答,他使用
在上述两种方法中,您都可以重定向到您感兴趣的任何 Route 或 Action,并使用 HttpContent.Items[] 或 TempData 保存要在目标页面上显示的特定错误消息或值。
在您的
1.1。显示登录表单
2.1。显示错误信息
由于您的
1 2 3 4 5 6 7 8 | if (!Request.IsAuthenticated) { //render login form } else { <p>Error: you do not have the necessary credentials to access this resource.</p> } |
另一种选择是创建自己的