2011-10-20 36 views
0

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

由于

+0

所以你试图融合窗口和窗体身份验证? – MarkKGreenway

+0

不,我有Windows认证,并希望保持这种方式。我只是想知道是否有方法检查用户组,如果他是该组的成员,那么他可以访问该网站。 – SoftwareSavant

回答

0

仰视角色/组信息用于用户

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

使用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(角色名)”,也就是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

相关问题