获取具体用户对应的User Roles
Get User Roles coresponding to concrete user
如何将 Task<IList<string>>
解压为 List
或其他?我正在寻找一种获取用户 Role
的方法(一个用户只有一个 Role
但从这个查询中我得到 Task
列表,但我无法从中获取该角色。如何处理?
我的查询:
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();
}
或者有没有办法让 Login
而不是 async
? Identity Core
中的字节有同步管理器方法。
您可以使用 await
:
var appUserRoles =await this.userManager.GetRolesAsync(appUser);
在调用所有用 Task
装饰的方法之前放置一个 await
,为此你可以使用这样的东西:
var userRoles =await this.userManager.GetRolesAsync(appUser);
这 returns 中的所有角色 List<T>
,或者您可以使用 Result
,例如:
var userRoles =this.userManager.GetRolesAsync(appUser).Result;
现在你有一个角色列表,你可以 enumerate
他们并选择你想要的
var role=userRoles.Where(r=>r.name=='admin') ; // example
如何将 Task<IList<string>>
解压为 List
或其他?我正在寻找一种获取用户 Role
的方法(一个用户只有一个 Role
但从这个查询中我得到 Task
列表,但我无法从中获取该角色。如何处理?
我的查询:
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();
}
或者有没有办法让 Login
而不是 async
? Identity Core
中的字节有同步管理器方法。
您可以使用 await
:
var appUserRoles =await this.userManager.GetRolesAsync(appUser);
在调用所有用 Task
装饰的方法之前放置一个 await
,为此你可以使用这样的东西:
var userRoles =await this.userManager.GetRolesAsync(appUser);
这 returns 中的所有角色 List<T>
,或者您可以使用 Result
,例如:
var userRoles =this.userManager.GetRolesAsync(appUser).Result;
现在你有一个角色列表,你可以 enumerate
他们并选择你想要的
var role=userRoles.Where(r=>r.name=='admin') ; // example