2011-05-05 91 views
-1

與asp.net中的角色有關的問題。所以我目前正在嘗試爲我的網站設置角色。我使用這段代碼來製作formsAuthentication票據。asp.net,未通過表單身份驗證分配的角色

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
       1, //Ticket version 
       p.firstName, //username 
       DateTime.Now, 
       DateTime.Now.AddMinutes(30), 
       false, //true for persistant user cookie 
       "Admin", 
       FormsAuthentication.FormsCookiePath); 
      string hashCookies = FormsAuthentication.Encrypt(ticket); 
      HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies); 
      Response.Cookies.Add(cookie); 
      Response.Redirect("Default.aspx");

您可以看到我將角色「admin」添加到此人。頁。是一個對象,firstname是一個字符串。在下一段代碼中,我們檢查了他進入管理員站點時是否具有管理員角色。如果他不是管理員,他必須退回。

if (User.IsInRole("Admin") != true) 
    { 
     Response.Redirect("Default.aspx"); 
    }

奇怪的是,它將我返回到默認頁面?任何人都知道答案?

PS。我知道你必須在web.config文件的不同位置設置授權。但是,如果他甚至沒有得到這個角色,那麼現在並不重要。

回答

1

我不確定你能否通過這種方式獲得角色。它設計的工作方式是通過角色經理。詳細請參閱this article

您可能想要看的一件事是cacheRolesInCookie設置。如果禁用了該功能,則可以確保默認表單身份驗證內容不會從身份驗證Cookie重新加載角色。

+0

我跟着鏈接。不知道有一個配置管理員。所以我添加了我需要的角色。但它仍然沒有工作。然後我將它添加到我的登錄Roles.AddUserToRole(p.firstName,p.userRole); - 哪個工作得很好。所以他們現在真的得到了角色。爲什麼它不起作用,首先將它們添加到票據中,我不知道。此外,它似乎有HttpContext.Current.User.IsInRole和User.IsInRole之間的區別。 – 2011-05-05 08:34:58

+0

哦,並感謝你的cacheRolesInCookie我認爲它幫助了很多以及:) – 2011-05-05 08:37:29

+0

和順便說一句。他們在配置管理器中進行了更改,他們最終在哪裏?它似乎沒有對配置文件做任何事情。 – 2011-05-05 08:42:33

相關問題