ASP.NET成员 - 这RoleProvider使用,因此User.IsInRole()检查的ActiveDirectory组?
-
21-08-2019 - |
题
很简单的问题实际上是:
我现在有IIS中禁用匿名访问,用户会自动使用他们的Windows登录记录。然而调用User.IsInRole(“角色名”)返回false。我双重检查User.Identity.Name()和“角色名”,它应该返回true。
目前,我有这个在我的web.config:
<强> 更新 强>结果 我打电话User.IsInRole( “角色名字”)其中,I应该调用User.IsInRole( “DOMAIN \角色名称”)
不过,我仍想知道是否需要在所有的<会员>条目?
我应该怎么改? (和是<成员>项在所有需要的?)
<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将没有额外的配置工作,只要你还记得前面加上域的角色,即域\组名。
另外,你可以角色(双关语意),你自己的,并使用Windows身份验证反对,例如SQL角色提供,你不希望自己的广告与您的应用程序自定义角色散落。
所以,不,你并不需要提供的配置都没有。
其他提示
这里的会员供应商是不会帮助。该ActiveDirectoryMembershipProvider似乎最好的(只?)配合Forms身份验证。
BlogEngine.NET具有活动目录角色提供。
很肯定你在唯一需要的存在roleManager组(与基部认证方式沿=“窗口”设定)
开箱,没有角色提供直接使用Active Directory。您可以使用角色表在ASP.NET学院成员和角色的系统,或者您也可以使用授权管理器(AzMan)。
有对文章 CodeProject上其中显示了一个角色提供的实施这对工作在Active Directory - 与完整的源代码。也许这可以帮助?
马克
不隶属于 StackOverflow