很简单的问题实际上是:

我现在有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 - 与完整的源代码。也许这可以帮助?

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top