Asp.net

ASP.NET 成員資格 - 使用哪個 RoleProvider 以便 User.IsInRole() 檢查 ActiveDirectory 組?

  • November 24, 2017

其實很簡單的問題:

我目前禁用了 IIS 匿名訪問,使用者使用他們的 Windows 登錄名自動登錄。但是呼叫 User.IsInRole(“Role name”) 返回 false。我仔細檢查了 User.Identity.Name() 和“角色名稱”,它應該返回 true。

我目前在我的 Web.Config 中有這個:

更新

我打電話給 User.IsInRole(“Role name”) 我應該打電話給 User.IsInRole(“DOMAIN\Role name”)

但是我仍然想知道是否需要 <membership> 條目?

我應該改變什麼?(並且是否需要 <membership> 條目?

 &lt;authentication mode="Windows"&gt;
     &lt;forms
     name=".ADAuthCookie"
     timeout="10" /&gt;
 &lt;/authentication&gt;


&lt;membership defaultProvider="ADMembershipProvider"&gt;
 &lt;providers&gt;
   &lt;clear/&gt;
     &lt;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"
        /&gt;
 &lt;/providers&gt;
&lt;/membership&gt;

&lt;roleManager enabled="true" defaultProvider="WindowsProvider"&gt;
 &lt;providers&gt;
   &lt;clear /&gt;
     &lt;add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /&gt;
 &lt;/providers&gt;
&lt;/roleManager&gt;

如果您使用 Windows 身份驗證,IsInRole 無需額外配置即可工作,只要您記得為角色添加域前綴,即 DOMAIN\groupName。

此外,您可以扮演自己的角色(雙關語)並針對例如 SQL 角色提供程序使用 Windows 身份驗證,您不希望您的 AD 在您的應用程序中充斥著自定義角色。

所以不,您根本不需要提供程序配置。

這裡的會員提供者不會提供幫助。ActiveDirectoryMembershipProvider 似乎最適合(僅?)適合 Forms 身份驗證。

引用自:https://stackoverflow.com/questions/863080