Sad*_*Ali 8 asp.net asp.net-identity-2
我试图弄清楚如何在身份框架中找到用户角色名称.
我有这样的配置,只有一个角色分配给用户.
所以,我尝试过使用
public string GetUserRole(string EmailID, string Password)
{
var user = await _userManager.FindAsync(EmailID, Password);
var roleid= user.Roles.FirstOrDefault().RoleId;
}
Run Code Online (Sandbox Code Playgroud)
但我得到的只是RoleId而不是RoleName.
任何人都可以帮我找到用户的RoleName吗?
Zah*_*sta 18
在您的代码中, userobject表示AspNetUsers具有导航属性的表,该属性Roles表示AspNetUserInRoles表而不是AspNetRoles表.所以当你尝试浏览时
user.Roles.FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
它为您提供了AspNetUserInRoles哪些存储UserId和RoleId.
相反,你可以尝试UserManger的GetRoles方法,该方法将返回List<string>用户分配角色.但正如你所提到的那样,它只有一个角色,因此你可以从GetRoles方法的结果中取第一个值.
您的功能应类似于下面给出的功能:
public async string GetUserRole(string EmailID, string Password)
{
var user = await _userManager.FindAsync(EmailID, Password);
string rolename = await _userManager.GetRoles(user.Id).FirstOrDefault();
return rolename;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您有用户列表,则必须执行以下操作:
var usuarioManager = Request.GetOwinContext().GetUserManager<UserManager<Usuario>>();
var roleManager = Request.GetOwinContext().Get<RoleManager<IdentityRole>>();
var roles = roleManager.Roles.ToList();
var usuarios = usuarioManager.Users.Include(x => x.Roles).ToList();
usuarios.ForEach((x) =>
{
if (x.Roles.Any())
{
var roleDb = roles.FirstOrDefault(r => r.Id == x.Roles.FirstOrDefault().RoleId);
if (roleDb != null)
x.RoleName = roleDb.Name;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14809 次 |
| 最近记录: |