2009-06-08 44 views
0

我的.Net Web應用程序中有一個基頁(從System.Web.UI.Page繼承而來,我的所有頁面都從這個基頁繼承而來),此刻如果我提出以下方法我的基本頁類上的Roles.IsUserInRole()

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

對於somereason它不知道的作用是!?!?返回。我甚至將用戶名傳遞給這些方法,但仍然不起作用。

但是,如果我把這段代碼放到我的頁面中,這個頁面繼承了這個基本頁面效果很好(沒有問題)。有任何想法嗎?對角色(或基礎類中的成員資格提供者)是否有任何限制?

感謝

回答

0

,而不是提供用戶名,爲什麼不試試這個:

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