基于角色的身份验证反馈给ASP.NET MVC中的用户

时间:2010-09-01 18:36:53

标签: asp.net-mvc role-based

我通过实现

为我的ASP.NET MVC应用程序中的某些功能使用基于角色的身份验证
<Authorize(Roles:="Administrator")> _
 Function AdminPage() As ActionResult
    Return View()
  End Function

如果用户未以管理员身份登录,则会将用户重定向到登录页面,但没有反馈为何会这样做。所以我想显示一条消息,例如“你必须是管理员才能访问此功能。”

我正在寻找一种干净的方法来做到这一点。

提前感谢。

1 个答案:

答案 0 :(得分:3)

您可以通过编写自定义授权属性轻松实现此目的:

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>