[英]ASP.NET Active Directory role provider
這是我第一次使用Active Directory中的ASP.NET角色成員身份。
到目前為止,我已經有一個網站正在運行,並且無法使用活動目錄用戶登錄。
我的問題是:我無法觸發“ Roles.IsUserInRole”。 就像它甚至沒有注意登錄用戶的組成員身份。
我一直在尋找解決方案,但是唯一可以找到的解決方案是編寫我自己的成員資格提供程序。 這真的必要嗎?
我想控制用戶可以使用其成員身份訪問的內容。 就像用戶位於AD的“學生”安全組中一樣,他們只能訪問ASP.NET解決方案中學生文件夾中的頁面。
我正在使用表單身份驗證。
這是我的角色管理器的Webconfig示例:
<system.web>
<roleManager defaultProvider="WindowsProvider"
enabled="true"
cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
</system.web>
在這里我正在嘗試IsUserInRole
protected void Login2_LoggingIn(object sender, LoginCancelEventArgs e)
{
if (Roles.IsUserInRole("Students"))
{
Response.Redirect("../Students/StartPage.aspx");
}
}
獎勵問題:我只能通過廣告中“用戶”容器中的用戶登錄。 為什么我不能從某個級別的OU登錄用戶?
關於第一個問題,您是否已經嘗試過將組名和域名一起使用,例如Roles.IsUserInRole(@"DOMAIN\\groupName")
?
至於第二個問題。 我假設您使用ActiveDirectoryMembershipProvider
。 如果是這樣,我認為您的web.config中有一個連接字符串(供提供者使用),並且此連接字符串指定提供者應使用Users容器。 但是,您不必指定具體的容器(有關詳細信息,請參見本網站 )。 例如,代替:
LDAP://testdomain.test.com/CN=Users,DC=testdomain,DC=test,DC=com
您可以使用:
LDAP://testdomain.test.com
從您的描述中,您似乎正在使用帶有ActiveDirectoryMembershipProvider
表單身份驗證進行身份驗證。
這與WindowsTokenRoleProvider
不兼容。 要使用WindowsTokenRoleProvider
,它基於Windows組成員身份公開角色,您需要使用Windows身份驗證。
確保刪除:
<authentication mode="Forms">....</authentication>
那么您也可以使用:
User.IsInRole("Students");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.