2012-04-05 64 views
1

LDAP驗證我有建立一個asp.net(C#)與LDAP進行身份驗證。一切正常,我可以登錄我們目錄中的任何用戶。問題是,我需要將特定頁面限制在特定組中的人員。我正在使用登錄視圖+帳戶文件夾方法。用的memberOf

我的網站設計很簡單,它有三頁,一個是可見的爲大家(賬戶文件夾之外),另外兩個要求身份驗證。我希望一個組可以訪問這兩個網頁,而另一個組只能訪問其中一個網頁。

我已經試過:

String group = "group"; 
if (!User.IsInRole(group)) { 
    Response.Redirect("login.aspx"); 
} 

但無論是我的用戶是不是該組羣。我有一個LDAP瀏覽器,我知道我確實在組中。 LDAP瀏覽器顯示「memberOf」和「CN = group」。

有什麼我做錯了嗎?

回答

0

當您爲用戶創建FormsAuthenticationTicket時,UserData指定該用戶的「角色」。

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

剛例如:

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, 
    username, DateTime.Now, DateTime.Now.AddMinutes(30), 
    isPersist, "group"); 

//I'll add more example code for the sake of completing the example 
string encryptTick = FormsAuthentication.Encrypt(authTicket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, 
       encryptTick); 
if (isPersist) 
    cookie.Expires = authTicket.Expiration; 
Response.Cookies.Add(cookie); 

這應該允許你上面的代碼工作。

0

如果使用集成身份驗證對您的域名,並且已經設置模擬爲true,則可以通過從具有權限的目錄中刪除ASPNET(以及任何其他全局組)鎖定您的應用領域,並添加在您想要訪問的指定AD組中。

我肯定會記錄這一點,因爲我繼承了使用該方法的系統,它絆倒了我幾個小時搞清楚的訪問控制得到執行。

相關問題