ASP.NET - 为用户获取安全组

时间:2013-03-27 18:10:28

标签: c# asp.net

我有一个在内联网上运行的网站,集成了Windows安全保护。

<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
    <allow roles="MyDomain\Group1,MyDomain\Group2"/>
</authorization>

如何确定当前用户是否属于MyDomain \ Group1或MyDomain \ Group2。我在下面尝试了这个,但它会抛出一个错误:

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
        GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "MyDomain\Group1");
        PrincipalSearchResult<Principal> user = UserPrincipal.Current.GetGroups();

        foreach (Principal principal in group.Members)
        {
            if (UserPrincipal.Current.Name == principal.Name)
            {
                // Enable Functionality

                break;
            }
        }

如何确定当前用户是属于Mydomain \ Group1还是Mydomain \ Group2?

1 个答案:

答案 0 :(得分:0)

您可以简单地使用Roles类:

,而不是使用Active Directory API

Roles.GetRolesForUser()

只需将此添加到您的web.config:

<roleManager defaultProvider="WindowsProvider" 
  enabled="true"
  cacheRolesInCookie="false">
  <providers>
    <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx