asp.net-core – userManager.FindByName不返回角色
发布时间:2020-12-16 07:06:58 所属栏目:asp.Net 来源:网络整理
导读:我正在使用 OpenIddict for token authentication.昨天当我调用userManager.FindByNameAsync(request.Username)时,我得到了带角色的用户. 今天我得到Roles属性count = 0的用户. 我试图加载角色,等待userManager.GetRolesAsync(user);我得到数量为3的数组.这
我正在使用
OpenIddict for token authentication.昨天当我调用userManager.FindByNameAsync(request.Username)时,我得到了带角色的用户.
今天我得到Roles属性count = 0的用户. 我试图加载角色,等待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 解决方法
你不能(至少没有实现你自己的IUserStore). 在引擎盖下,出于性能原因,默认的ASP.NET核心标识存储实现(基于EF)不会急切地加载与用户实体关联的导航属性,这就是未填充Roles属性的原因. 要加载与用户关联的角色,请使用UserManager.GetRolesAsync(user);. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用键入的HTML助手时的模型前缀
- asp.net – HMACSHA1.ComputeHash()线程安全问题
- asp.net-core – 无法运行dnx控制台应用程序
- .net – TransactionScope:它变得更好了吗?
- asp.net – 是否允许使用manifest.json的相对路径并将其放在
- asp.net – 发布管理 – 发布给用户的一小部分 – 它对于面
- asp.net-mvc – ASP.NET MVC – 动态授权
- asp.net-mvc – 如何将表单中的复选框序列化为Json数据
- 使用HttpModule Asp.net重定向URL
- asp.net-mvc-3 – 有没有办法迭代ASP.NET MVC3站点中的所有