2009-06-08 8 views
0

J'ai une page de base (héritée de System.Web.UI.Page et toutes mes pages héritent de cette page de base) dans mon application web .Net et pour le moment si je mettre les méthodes suivantesRôles.IsUserInRole() sur la page Ma page de base

protected void CheckAllowedRole(string UserName, List<string> AllowedRoles) 
    { 
     try 
     { 
      bool IsAllowed = false; 
      foreach (string item in AllowedRoles) 
      { 
       if (Roles.IsUserInRole(UserName, item)) 
        IsAllowed = true; 
      } 
      if (!IsAllowed) 
       Response.Redirect("~/Members/Error.aspx", false); 

     } 
     catch (Exception err) 
     { 
      Response.Redirect("~/Members/Error.aspx", false); 
     } 
    } 

pour une même raison, il ne sait pas que le rôle est!?!? Revenir. Je passe même le nom d'utilisateur dans cette méthode et ne fonctionne toujours pas non plus.

Mais si je prends ce code et le met dans ma page qui a hérité de cette page de base fonctionne bien (pas de problème). Des idées? Existe-t-il une restriction sur les rôles (ou le fournisseur d'appartenance dans la classe de base).

Merci

Répondre

0

au lieu de fournir le nom d'utilisateur pourquoi ne pas essayer:

protected void CheckAllowedRole(List<string> AllowedRoles) 
    { 
     try 
     { 
      if (!Page.User.Identity.IsAuthenticated) 
       throw new Exception("Unauthenticated User"); 

      string name = Page.User.Identity.Name; 

      bool IsAllowed = false; 
      foreach (string item in AllowedRoles) 
      { 
       IsAllowed = Roles.IsUserInRole(name, item); 
      } 

      if (!IsAllowed) 
       Response.Redirect("~/Members/Error.aspx", false); 
     } 
     catch (Exception err) 
     { 
      Response.Redirect("~/Members/Error.aspx", false); 
     } 
    } 
Questions connexes