我通过实现
为我的ASP.NET MVC应用程序中的某些功能使用基于角色的身份验证<Authorize(Roles:="Administrator")> _
Function AdminPage() As ActionResult
Return View()
End Function
如果用户未以管理员身份登录,则会将用户重定向到登录页面,但没有反馈为何会这样做。所以我想显示一条消息,例如“你必须是管理员才能访问此功能。”
我正在寻找一种干净的方法来做到这一点。
提前感谢。
答案 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>