2023-02-15 326
我试图弄清楚如何在身份框架中找到用户角色名称.
我有这样的配置,只会分配给用户的一个角色.
所以,我尝试使用
public string GetUserRole(string EmailID, string Password)
{
var user = await _userManager.FindAsync(EmailID, Password);
var roleid= user.Roles.FirstOrDefault().RoleId;
}
但我得到的只是learid而不是rolename.
任何人都可以帮助我找到用户的rolename?
在代码中,user对象表示具有导航属性Roles的AspNetUsers表,它表示AspNetUserInRoles表而不是AspNetRoles表.
所以当你尝试浏览
时
user.Roles.FirstOrDefault()
它为您提供了存储userid和learid的AspNetUserInRoles.
相反,您可以尝试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;
}
如果您有一个用户列表,您必须执行以下操作:
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;
}
});
以上所述是小编给大家介绍的如何在Asp.Net Identity中获得用户的角色名称,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33772.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态