0

我正在通过实现对我的 ASP.NET MVC 应用程序中的某些功能使用基于角色的身份验证

<Authorize(Roles:="Administrator")> _
 Function AdminPage() As ActionResult
    Return View()
  End Function

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

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

预先感谢。

4

1 回答 1

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>
于 2010-09-01T18:46:53.930 回答