0

Windows セキュリティが統合されたイントラネット上で実行されている Web サイトがあります。

<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

Active Directory API を使用する代わりに、単純に Roles クラスを使用できます。

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 に答える