1

我有一个 Web 应用程序,它使用Authorize具有指定角色的属性来限制对某些页面的访问:

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

groupId问题是 - 有什么方法可以为授权用户(无论是 int 还是 string)获得某种 Active Directory ?

upd: 基本思想是在数据库中存储一些表,其中包含每个组应该分开的模板。例如,用户group1可以有一些模板来快速回答典型问题,group2但没有任何模板,或者有一些其他模板

4

1 回答 1

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 中与用户和组一起玩变得非常容易!

于 2013-03-01T13:21:55.973 回答