Функция диспетчера ролей в ASP.NET не включена
Я пытаюсь создать подпрограмму на главной странице моего asp.net, которая будет видеть, является ли текущий пользователь членом группы домена Windows. Сайт размещен в IIS и виден через нашу интрасеть.
GlenFerrieLive перечислил этот код (который я хотел бы использовать) в предыдущем посте:
UserName = System.Environment.UserName
If Roles.IsUserInRole(UserName, "MyDomain\MyGroup") Then
Dim UserExists As Boolean = True
End If
При попытке этого кода я получил вышеупомянутую ошибку. Поэтому я подключил тег roleManager в моем файле Web.config следующим образом:
<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="ActiveDirectoryMembershipProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="480" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All" />
Проблема в том, что теперь я получаю сообщение об ошибке "Не удалось найти поставщика ролей по умолчанию".
Как я могу обойти это? Мне просто нужно посмотреть, существует ли текущий пользователь в определенной доменной группе.
Любая помощь будет принята с благодарностью.
Спасибо,
Джейсон
2 ответа
Я закончил тем, что использовал это:
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" />
Посмотрите на эту страницу:http://msdn.microsoft.com/en-us/library/ff648345.aspx
Вам нужно что-то подобное в вашей веб-конфигурации, указывающее, куда указывает поставщик ролей по умолчанию
<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>