2010-09-01 7 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 

И где-то на вашем Logon Виде:

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