Windows身份验证可用的角色

时间:2009-05-28 18:07:04

标签: asp.net-mvc windows-authentication

我正在尝试将角色身份验证添加到ASP.NET MVC应用程序中的Controller中的Action。代码看起来像这样:

[Authorize(Roles = "SomeRoleName")]
public ActionResult Index()
{
    bool inRole = User.IsInRole("Admin");

如果我删除了Authorize属性并在该代码示例的最后一行放置断点,是否有办法可以检查对象并找出可用的角色?

e.g。我在立即窗口中调用User.IsInRole(“Admin”),它会给我一个true / false值。如何访问可用角色集合?

4 个答案:

答案 0 :(得分:16)

如果您不需要以编程方式执行此操作,但是您尝试确定需要指定的正确Windows组/角色,则可以从命令行使用此命令:

C:\> net group /domain  (lists all Roles in the domain)
C:\> net user <username> /domain (lists info, including roles for a user)

否则,您将需要查询Active Directory的LDAP部分,或使用DirectoryServices下的内容。

看一下这些网站,通过C#访问Active Directory:

答案 1 :(得分:7)

将此添加到system.web下的web.config:

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>

然后你可以使用:

string[] arr = Roles.GetRolesForUser(User.Identity.Name);

或:

string[] arr = Roles.GetRolesForUser();

enter image description here

答案 2 :(得分:3)

您可以在System.Web.Security.Roles.Provider中的RoleProvider类上使用各种方法。

有关详情,请参阅此处:Role Provider

答案 3 :(得分:1)

我猜你没有在这里使用角色提供程序,而是回到WindowsPrincipal的基础功能,其中角色映射到用户的组。无论如何,我不认为人们可以做的不仅仅是枚举该域/该域中可用的Windows组。不确定这是否有帮助,但这就是我所能说的,而不知道你要对所述角色列表做什么。