我有一个asp.net(C#)设置为使用LDAP进行身份验证 . 一切正常,我可以登录我们目录中的任何用户 . 问题是,我需要将某些页面限制在特定组中的人员 . 我正在使用登录视图的帐户文件夹方法 .
我的网站设计很简单,它有三个页面,一个可供所有人查看(帐户文件夹之外),另外两个需要身份验证 . 我希望一个组可以访问这两个网页,而第二个组只能访问其中一个页面 .
我试过了:
String group = "group";
if (!User.IsInRole(group)) {
Response.Redirect("login.aspx");
}
但无论我的用户不在该组中 . 我有一个LDAP浏览器,我知道我确实在群组中 . LDAP浏览器显示“memberOf”和“CN = group” .
有什么我做错了吗?
3 回答
为用户创建
FormsAuthenticationTicket
时,UserData
指定该用户的"Role(s)" .http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
仅举例如:
这应该允许上面的代码工作 .
您是否尝试过添加域名?
您也可以使用App.Config实现此功能:http://bytes.com/topic/asp-net/answers/300187-web-config-authorization-help
编辑:
Here是使用App.Config在ASP.NET中基于角色的安全性的更好链接 .
如果对域使用集成身份验证,并且已将模拟设置为true,则可以通过删除ASPNET(以及任何其他全局组)对目录具有权限来锁定应用程序的区域,并添加到指定的AD中您想要访问的群组 .
我肯定会记录这一点,因为我继承了一个使用这种方法的系统,它让我绊倒几个小时来确定实施访问控制的位置 .