尚未启用ASP.NET角色管理器功能

时间:2011-07-07 15:36:17

标签: asp.net vb.net security membership roleprovider

我正在尝试在我的asp.net主页面中创建一个例程,该例程将查看当前用户是否是Windows域组的成员。该站点托管在IIS中,可通过我们的Intranet查看。

GlenFerrieLive在之前的帖子中列出了这段代码(我想使用它):

    UserName = System.Environment.UserName

    If Roles.IsUserInRole(UserName, "MyDomain\MyGroup") Then
        Dim UserExists As Boolean = True
    End If

尝试该代码时,我收到了上述错误。所以我在我的Web.config中插入了roleManager标签,如下所示:

<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="ActiveDirectoryMembershipProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="480" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All" />

问题是,现在我收到配置错误'无法找到默认角色提供程序'。

我该如何解决这个问题?我只需要查看当前用户是否存在于特定域组中。

非常感谢任何帮助。

谢谢,

杰森

2 个答案:

答案 0 :(得分:1)

查看此页面:http://msdn.microsoft.com/en-us/library/ff648345.aspx

您需要在webconfig中指定默认角色提供程序指向的位置

<connectionStrings>
  <add name="ADConnectionString" 
   connectionString=
    "LDAP://domain.testing.com/CN=Users,DC=domain,DC=testing,DC=com" />
</connectionStrings>

<system.web>
 ...
 <membership defaultProvider="MembershipADProvider">
  <providers>
    <add
      name="MembershipADProvider"
      type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, 
            Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="ADConnectionString" 
                connectionUsername="<domainName>\administrator" 
                connectionPassword="password"/>
   </providers>
 </membership>
 ...
</system.web>

答案 1 :(得分:1)

我最终使用了这个:

Private Function ValidateActiveDirectoryLogin(ByVal Domain As String, ByVal Username As String, ByVal Password As String) As Boolean
    Dim Success As Boolean = False
    Dim Entry As New System.DirectoryServices.DirectoryEntry("LDAP://" & Domain, Username, Password)
    Dim Searcher As New System.DirectoryServices.DirectorySearcher(Entry)
    Searcher.SearchScope = DirectoryServices.SearchScope.OneLevel
    Try
        Dim Results As System.DirectoryServices.SearchResult = Searcher.FindOne
        Success = Not (Results Is Nothing)
    Catch
        Success = False
    End Try
    Return Success
End Function 

当它出现在我的web.config中时,就像魅力一样:

    <authentication mode="Windows"/>

    <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetWindowsTokenRoleProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="480" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All" />