我正在尝试将角色身份验证添加到ASP.NET MVC应用程序中的Controller中的Action。代码看起来像这样:
[Authorize(Roles = "SomeRoleName")]
public ActionResult Index()
{
bool inRole = User.IsInRole("Admin");
如果我删除了Authorize属性并在该代码示例的最后一行放置断点,是否有办法可以检查对象并找出可用的角色?
e.g。我在立即窗口中调用User.IsInRole(“Admin”),它会给我一个true / false值。如何访问可用角色集合?
答案 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();
答案 2 :(得分:3)
您可以在System.Web.Security.Roles.Provider中的RoleProvider类上使用各种方法。
有关详情,请参阅此处:Role Provider
答案 3 :(得分:1)
我猜你没有在这里使用角色提供程序,而是回到WindowsPrincipal的基础功能,其中角色映射到用户的组。无论如何,我不认为人们可以做的不仅仅是枚举该域/该域中可用的Windows组。不确定这是否有帮助,但这就是我所能说的,而不知道你要对所述角色列表做什么。