C# 获取与具体用户相关的用户角色
如何将任务解包到列表或其他内容?我正在寻找一种方法来获得用户角色一个用户只有一个角色,但从这个查询我得到任务列表,我无法从中获得该角色。如何处理 我的问题是:C# 获取与具体用户相关的用户角色,c#,asp.net-web-api,asp.net-core,asp.net-identity,asp.net-core-2.1,C#,Asp.net Web Api,Asp.net Core,Asp.net Identity,Asp.net Core 2.1,如何将任务解包到列表或其他内容?我正在寻找一种方法来获得用户角色一个用户只有一个角色,但从这个查询我得到任务列表,我无法从中获得该角色。如何处理 我的问题是: var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName); var appUserRoles = this.userManager.GetRolesAsync(appUser); //Here i get List
var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName);
var appUserRoles = this.userManager.GetRolesAsync(appUser); //Here i get List of task
和完整方法
[HttpPost("Login")]
public async Task<object> Login([FromBody] LoginBindingModel model)
{
var result = await this.signInManager.PasswordSignInAsync(model.UserName, model.Password, false, false);
if (result.Succeeded)
{
var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName);
var appUserRoles = this.userManager.GetRolesAsync(appUser);
var bearerToken = await this.GenerateJwtToken(model.UserName, appUser);
return this.Ok(new AccountViewModel
{
//model
});
}
return this.Unauthorized();
}
或者有没有办法让登录不异步?Byt在Identity Core中有多种方法。您可以使用Wait:
在调用所有用Task修饰的方法之前放置一个wait,为此,您可以使用如下方法:
var userRoles =await this.userManager.GetRolesAsync(appUser);
这将返回列表中的所有角色,也可以使用结果,如:
现在您有了一个角色列表,您可以枚举它们并选择所需的角色
var role=userRoles.Where(r=>r.name=='admin') ; // example
尝试此变量appUserRoles=\u userManager.GetRolesAsyncappUser.Result.ToList,获取此任务的结果值如果它是异步的,请使用Wait。
var userRoles =this.userManager.GetRolesAsync(appUser).Result;
var role=userRoles.Where(r=>r.name=='admin') ; // example