2010-12-14 15 views
2

J'ai une fonction nommée commentaires avec des attributs [Authorize (Roles = "Admin, Users")]. J'ai bouton d'édition pour les commentaires. Dans la fonction Edit, nous avons l'attribut [Authorize (Roles = "Admin")]. Lorsque l'utilisateur tente d'accéder, je veux lancer une page d'erreur personnalisée. Je n'utilise pas l'authentification par formulaires uniquement le fournisseur de rôles. Comment puis-je rediriger vers la page d'erreur personnalisée.utilisant le fournisseur de rôles dans l'application mvc2

Répondre

0

Ecrire un attribut personnalisé

par exemple

public class CustomAuthorizeAttribute : AuthorizeAttribute 
    { 
     private string[] UnAuthorizedRoles = new string[] { "USER" }; 

     protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) 
     { 
      bool authorized = true; 
      foreach (string role in UnAuthorizedRoles) 
      { 
       if (httpContext.User.IsInRole(role)) 
       { 
        authorized = false; 
       } 
      } 
      return authorized; 
     } 


     protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
     { 
      // send to custom error page 
     } 
    }