2010-09-01 7 views
0

J'utilise l'authentification basée sur des rôles pour certaines des fonctions dans mon application ASP.NET MVC en mettant en œuvrealimentation d'authentification basée sur les rôles retour à l'utilisateur dans ASP.NET MVC

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

Si l'utilisateur n'est pas connecté comme Administrateur cela redirigera l'utilisateur vers la page de connexion, mais il n'y a pas de retour pourquoi il l'a fait. Je veux donc afficher un message du type "Vous devez être administrateur pour accéder à cette fonctionnalité".

Je cherche un moyen propre de faire ceci.

Merci d'avance.

Répondre

3

Vous pouvez facilement y parvenir en écrivant un attribut authorize personnalisé:

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 

Et puis décorer l'action du contrôleur avec cet attribut personnalisé:

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

Et quelque part sur votre vue de connexion:

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