[英]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.