如何在C#中检查当前用户的角色并将其打印到屏幕上。
谢谢!
你可以使用Roles.GetRolesForUser()
方法获取用户所属的所有角色。像这样使用:
string[] rolesuserbelongto = Roles.GetRolesForUser();
你将会得到一个字符串数组,其中包含所有角色。
你甚至可以传递一个用户名作为参数,像这样获取特定用户的角色:
string[] rolesuserbelongto = Roles.GetRolesForUser("Shekhar_Pro");
static void PrintIsInAdministrators()
{
// There are many ways to get a principle... this is one.
System.Security.Principal.IPrincipal principle = System.Threading.Thread.CurrentPrincipal;
bool isInRole = principle.IsInRole("MyDomain\\MyRole");
Console.WriteLine("I {0} an Admin", isInRole ? "am" : "am not");
}
Roles.GetRolesForUser();
给我报错:The Role Manager feature has not been enabled
。
如果你使用的是 ASP.NET Identity UserManager
,可以通过以下方式获取它:
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
如果您已将用户的密钥从GUID更改为Int,请使用此代码:
var roles = userManager.GetRoles(User.Identity.GetUserId<int>());
您可以使用用户管理器来实现这个目的:
var userRoles = await _userManager.GetRolesAsync(user);
string[] userroles = Roles.GetRolesForUser(Page.User.Identity.Name);
foreach(var role in userroles)
{
Response.Write(role);
}
@if (Request.IsAuthenticated)
{
if (User.IsInRole("Admin"))
{
<h1> I only show this text to admin users </h1>
}
}
注意:如果您已经实现了AccountController.cs
文件,您可以检查其中定义的角色。
不太确定你的问题。
你可以这样做:
this.User.IsInRole();
//loop and check whether the user is in your role.
this
将对应于一个 页面类,因此您只能在页面内编写上述代码,this.User
返回一个 IPrincipal。