2013-03-01 114 views
1

Active Directory組ID我已經使用了Authorize屬性與角色的規定來限制訪問某些網頁的Web應用程序:我如何獲得授權的用戶

[Authorize(Roles = "AD_group1, AD_group2")] 

的問題是 - 有什麼辦法,我可以爲授權用戶獲取某種Active Directory groupId(不管是int還是string)?

upd: 基本想法是在數據庫中存儲一些表格,其中包含應該爲每個組分開的模板。例如在group1用戶可以快速回答的典型問題一些模板,同時group2沒有任何人,或者有一些其他的模板

回答

3

如果你在.NET 3.5及以上,你應該看看System.DirectoryServices.AccountManagement( S.DS.AM)命名空間。在這裏閱讀全部內容:

基本上,你可以定義域範圍內,並可以輕鬆地查找用戶和/或組AD:

// set up domain context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // find a user 
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 
    // or if you want the currently logged in user - you can also use: 
    // UserPrincipal user = UserPrincipal.Current; 

    if(user != null) 
    { 
     // get all groups the user is a member of 
     foreach(GroupPrincipal group in user.GetAuthorizationGroups()) 
     { 
      string distinguishedName = group.DistinguishedName; 
      Guid groupGuid = group.Guid; 
     } 
    } 
} 

的新的S.DS.AM可以很容易地與AD中的用戶和羣組玩耍!

+0

謝謝!這就是我所需要的 – Sergio 2013-03-01 13:32:39

+0

我生產中出現錯誤System.InvalidCastException:無法強制類型'System.DirectoryServices.AccountManagement.GroupPrincipal'轉換類型'System.DirectoryServices.AccountManagement.UserPrincipal'的對象?不知道該怎麼辦? – 2016-03-15 11:05:58

相關問題