2009-06-08 12 views
0

Ich habe eine Basis-Seite (geerbt von System.Web.UI.Page und alle meine Seiten erben von dieser Basis-Seite) in meiner .Net Web-Anwendung und im Moment wenn ich setzen die folgenden MethodenRoles.IsUserInRole() auf Meine Basis Seite Klasse

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); 
     } 
    } 

für somereason es nicht die Rolle weiß ist!?!? Rückkehr. Ich gebe sogar den Benutzernamen in diese Methoden und funktioniert auch nicht.

Aber wenn ich diesen Code nehme und in meine Seite lege, die von dieser Basisseite geerbt wird, funktioniert gut (kein Problem). Irgendwelche Ideen? Gibt es Einschränkungen für die Rollen (oder den Mitgliedschaftsanbieter in der Basisklasse)?

Dank

Antwort

0

stattdessen den Benutzernamen der Bereitstellung, warum diese nicht versuchen:

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); 
     } 
    } 
Verwandte Themen