2010-09-01 44 views
0

我使用基于角色的身份验证的一些在我的ASP.NET MVC应用程序的功能通过实施基于角色的身份验证反馈给用户在ASP.NET MVC

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

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

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

提前致谢。

回答

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> 
相关问题