0

我有一个在 Intranet 上运行的网站,该网站具有集成的 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?

4

1 回答 1

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

于 2013-03-27T18:20:15.263 回答