Ролевая аутентификация обратная связь с пользователем в ASP.NET MVC - PullRequest
0 голосов
/ 01 сентября 2010

Я использую проверку подлинности на основе ролей для некоторых функций моего приложения ASP.NET MVC, реализовав

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

Если пользователь не вошел в систему как администратор, он перенаправит пользователя на страницу входа, но нет обратной связи, почему он это сделал. Поэтому я хочу отобразить сообщение типа «Вы должны быть администратором, чтобы получить доступ к этой функции».

Я ищу чистый способ сделать это.

Спасибо заранее.

1 Ответ

3 голосов
/ 01 сентября 2010

Вы можете легко достичь этого, написав собственный атрибут авторизации:

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>
...