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

Asp.net mvc ASP.NET MVC中基于角色的身份验证反馈给用户,asp.net-mvc,role-based,Asp.net Mvc,Role Based,我通过实现ASP.NET MVC应用程序中的一些功能,使用基于角色的身份验证 <Authorize(Roles:="Administrator")> _ Function AdminPage() As ActionResult Return View() End Function _ 函数AdminPage()作为ActionResult 返回视图() 端函数 如果用户未以管理员身份登录,则会将用户重定向到登录页面,但没有反馈为什么会这样做。因此,我想显示一条类似“

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

<Authorize(Roles:="Administrator")> _
 Function AdminPage() As ActionResult
    Return View()
  End Function
_
函数AdminPage()作为ActionResult
返回视图()
端函数
如果用户未以管理员身份登录,则会将用户重定向到登录页面,但没有反馈为什么会这样做。因此,我想显示一条类似“您必须是管理员才能访问此功能”的消息

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


提前感谢。

您可以通过编写自定义授权属性轻松实现这一点:

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
然后使用此自定义属性装饰控制器操作:

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
_
作为ActionResult的公共函数AdminPage()
返回视图()
端函数
在登录视图中的某个位置:

<div><%: TempData("message") %></div>

您可以通过编写自定义授权属性轻松实现这一点:

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
然后使用此自定义属性装饰控制器操作:

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
_
作为ActionResult的公共函数AdminPage()
返回视图()
端函数
在登录视图中的某个位置:

<div><%: TempData("message") %></div>