Mak*_*kla 6 asp.net-identity asp.net-core openiddict asp.net-core-identity
我正在使用OpenIddict进行令牌身份验证.昨天当我打电话给userManager.FindByNameAsync(request.Username)我时,我得到了带角色的用户.
今天我得到Roles属性count = 0的用户.
我试图加载角色,await userManager.GetRolesAsync(user);我得到数量为3的数组.这意味着用户有角色.
我不知道改变了什么,但是如何使用FindByNameAsync函数加载具有角色的用户?
完整代码:
[HttpPost("token"), Produces("application/json")]
public async Task<IActionResult> Exchange(OpenIdConnectRequest request)
{
Debug.Assert(request.IsTokenRequest(),
"The OpenIddict binder for ASP.NET Core MVC is not registered. " +
"Make sure services.AddOpenIddict().AddMvcBinders() is correctly called.");
if (request.IsPasswordGrantType())
{
var user = await userManager.FindByNameAsync(request.Username); //roles count is 0
if (user == null)
{
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.InvalidGrant,
ErrorDescription = "The email/password couple is invalid."
});
}
var roles = await userManager.GetRolesAsync(user); //roles count is 3
Run Code Online (Sandbox Code Playgroud)
但是如何使用FindByNameAsync函数加载具有角色的用户?
你不能(至少没有实现自己的IUserStore).
由于性能原因,默认的ASP.NET核心标识存储实现(基于EF)不会急切地加载与用户实体关联的导航属性,这Roles就是未填充属性的原因.
要加载与用户关联的角色,请使用UserManager.GetRolesAsync(user);.
| 归档时间: |
|
| 查看次数: |
1505 次 |
| 最近记录: |