允许使用Windows身份验证访问MVC站点通过用户名访问组

时间:2011-10-20 13:42:16

标签: asp.net-mvc-2 roleprovider active-directory-group

我有一个MVC2站点,现在允许通过Windows身份验证访问它,并使用ASP.net角色提供程序来提供授权。我试图为网站提供一种方式,允许用户访问该网站,如果他的用户名是某些组的成员,所以我不必在sql中注册用户,但只需注册一个具有访问权限的组。任何人都知道如何做到这一点?有快速而肮脏的方式吗?到目前为止,在我的互联网上,我没有找到一种快速而肮脏的方法来做到这一点?任何帮助都会很棒。

谢谢

1 个答案:

答案 0 :(得分:0)

查找用户的角色/组信息

ASP.NET提供了一种有用的“角色管理”功能,允许开发人员将用户映射到逻辑“角色”,然后可以用来更好地控制最终用户功能和授权访问。例如,作为开发人员,我可以为我的Web应用程序创建一个名为“管理员”的角色,然后将对网站部分的访问权限限制为“管理员”角色中的那些用户(注意:我将在其中发布其他配方)讨论如何充分利用角色管理授权和功能的未来。)

使用Windows身份验证时,ASP.NET允许开发人员从多个源创建和填充角色。例如,开发人员可以设置内置的ASP.NET 2.0 SqlRoleProvider,以将Windows用户映射到存储在数据库中的自定义应用程序角色。对于可能存在特定于应用程序的角色映射而无法推入集中式Active Directory树/存储的情况,此方法非常有用。

ASP.NET还可以轻松地从应用程序中访问中央Windows和Active Directory组映射。例如,如果Active Directory网络上有一个名为“DOMAIN \ managers”的Windows组,则ASP.NET应用程序可以通过编写如下代码来查找访问ASP.NET站点的当前Windows身份验证用户是否属于此组:

If User.IsInRole("DOMAIN\managers") Then
     Label1.Text = User.Identity.Name & " is a manager"
Else
     Label1.Text = User.Identity.Name & " is not a manager"
End If

请注意,角色/组查找是通过“User.IsInRole(rolename)”方法完成的,该方法是User.Identity.Name属性的对等方。

SRC http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx