1

我有一个 asp.net (C#) 设置来使用 LDAP 进行身份验证。一切正常,我可以使用我们目录中的任何用户登录。问题是,我需要将某些页面限制为特定组中的人。我正在使用登录视图+帐户文件夹方法。

我的网站设计很简单,它有三个页面,一个对所有人可见(在帐户文件夹之外),另外两个需要身份验证。我希望一组可以访问两个网页,而另一组只能访问其中一个页面。

我试过了:

String group = "group";
if (!User.IsInRole(group)) {
    Response.Redirect("login.aspx");
}

但无论我的用户不在该组中。我有一个 LDAP 浏览器,我知道我肯定在组中。LDAP 浏览器显示“memberOf”和“CN=group”。

有什么我做错了吗?

4

3 回答 3

0

您是否尝试过添加域名?

您也可以使用 App.Config 实现此功能:http: //bytes.com/topic/asp-net/answers/300187-web-config-authorization-help

编辑:

是使用 App.Config 在 ASP.NET 中基于角色的安全性的更好链接。

于 2012-04-05T18:52:44.550 回答
0

当您FormsAuthenticationTicket为用户创建时,UserData就是为该用户指定“角色”的内容。

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

举个例子:

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
    username, DateTime.Now, DateTime.Now.AddMinutes(30),
    isPersist, "group");

//I'll add more example code for the sake of completing the example
string encryptTick = FormsAuthentication.Encrypt(authTicket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                encryptTick);
if (isPersist)
    cookie.Expires = authTicket.Expiration;
Response.Cookies.Add(cookie);

这应该允许您上面的代码工作。

于 2012-04-05T18:56:55.720 回答
0

如果您对您的域使用集成身份验证,并且您已将模拟设置为 true,则可以通过删除 ASPNET(和任何其他全局组)对目录的权限来锁定应用程序的区域,并添加指定的 AD您想要访问的组。

我肯定会记录这一点,因为我继承了一个使用这种方法的系统,并且它让我绊倒了几个小时,以确定执行访问控制的位置。

于 2012-04-05T20:27:57.393 回答