【问题标题】:Role based authentication feed back to user in ASP.NET MVC基于角色的身份验证反馈给 ASP.NET MVC 中的用户
【发布时间】:2010-09-01 18:36:53
【问题描述】:
我正在使用基于角色的身份验证来实现我的 ASP.NET MVC 应用程序中的一些功能
<Authorize(Roles:="Administrator")> _
Function AdminPage() As ActionResult
Return View()
End Function
如果用户没有以管理员身份登录,这会将用户重定向到登录页面,但没有反馈为什么这样做。所以我想显示一条消息,例如“您必须是管理员才能访问此功能。”
我正在寻找一种干净的方法来做到这一点。
提前致谢。
【问题讨论】:
标签:
asp.net-mvc
role-based
【解决方案1】:
您可以通过编写自定义授权属性轻松实现此目的:
Public Class CustomAuthorizeAttribute
Inherits AuthorizeAttribute
Protected Overrides Sub HandleUnauthorizedRequest(filterContext As AuthorizationContext)
MyBase.HandleUnauthorizedRequest(filterContext)
filterContext.Controller.TempData("message") = String.Format("You need to be {0} to access this resource", Me.Roles)
End Sub
End Class
然后用这个自定义属性装饰控制器动作:
<CustomAuthorize(Roles := "Administrator")> _
Public Function AdminPage() As ActionResult
Return View()
End Function
在您的登录视图中的某处:
<div><%: TempData("message") %></div>