9

実際には非常に単純な質問:

現在、IIS の匿名アクセスを無効にしています。ユーザーは Windows ログインを使用して自動的にログオンしています。ただし、User.IsInRole("Role name") を呼び出すと false が返されます。User.Identity.Name() と「ロール名」を再確認したところ、true が返されるはずです。

私は現在これを私の Web.Config に持っています:

更新
User.IsInRole("Role name") を呼び出していましたが、ここで User.IsInRole("DOMAIN\Role name") を呼び出す必要があります

ただし、 <membership> エントリが必要かどうかを知りたいですか?

何を変更すればよいですか?(そして <membership> エントリは必要ですか? )

  <authentication mode="Windows">
      <forms
      name=".ADAuthCookie"
      timeout="10" />
  </authentication>


<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear/>
      <add
         name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionUsername="XXX\specialAdUser"
         connectionPassword="xx"
         />
  </providers>
</membership>

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

5 に答える 5

4

Windows 認証を使用する場合、IsInRole は追加の構成なしで機能します。ただし、役割の前にドメイン (DOMAIN\groupName) を付けることを忘れないでください。

さらに、AD にアプリケーションのカスタム ロールを散らかしたくない場合は、独自のロール (しゃれを意図したもの) を使用して、たとえば SQL ロール プロバイダーに対して Windows 認証を使用することができます。

いいえ、プロバイダーの構成はまったく必要ありません。

于 2009-05-24T20:05:45.680 に答える
1

BlogEngine.NET には、Active Directory ロール プロバイダーがあります。

于 2009-05-24T19:49:06.150 に答える
1

ここのメンバーシップ プロバイダーは役に立ちません。ActiveDirectoryMembershipProvider は、フォーム認証に最適 (のみ?) に適合するようです。

于 2009-05-22T19:18:15.167 に答える
0

箱から出して、ActiveDirectoryを直接使用する役割プロバイダーはありません。ASP.NETメンバーシップおよびロールシステムでロールテーブルを使用するか、Authorization Manager(AzMan)を使用できます。

完全なソースコードを使用して、ActiveDirectoryに対して機能するロールプロバイダーの実装を示すCodeProjectに関する記事があります。多分これは役立ちますか?

マーク

于 2009-05-24T17:13:56.450 に答える
0

そこに必要なのは roleManager グループだけです (base authentication mode='windows' 設定と一緒に)

于 2009-05-22T19:22:01.447 に答える