Asp.net
ASP.NET 成員資格 - 使用哪個 RoleProvider 以便 User.IsInRole() 檢查 ActiveDirectory 組?
其實很簡單的問題:
我目前禁用了 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>
如果您使用 Windows 身份驗證,IsInRole 無需額外配置即可工作,只要您記得為角色添加域前綴,即 DOMAIN\groupName。
此外,您可以扮演自己的角色(雙關語)並針對例如 SQL 角色提供程序使用 Windows 身份驗證,您不希望您的 AD 在您的應用程序中充斥著自定義角色。
所以不,您根本不需要提供程序配置。
這裡的會員提供者不會提供幫助。ActiveDirectoryMembershipProvider 似乎最適合(僅?)適合 Forms 身份驗證。