c# - UserManager.IsInRoleAsync 和 UserManager.GetRolesAsync 彼此不一致

标签 c# asp.net-core-identity

突然,对 UserManager.IsInRoleAsync 的查询在应返回“true”时却为用户返回“false”。查询用户的 UserManager.GetRolesAsync 确认 UserManager.IsInRoleAsync 确实应该返回“true”。
下面是调试器的屏幕截图,说明了问题:

enter image description here

我完全困惑了。 我正在使用 Microsoft.Extensions.Identity.Core (2.2.0.0)。

最佳答案

根据我的经验,这可能是由以下两个问题之一引起的:

  1. 我相信 IsInRoleAsync 要求用户经过身份验证才能工作。

  2. 如果您从旧的 ASP.NET 成员资格架构迁移角色,则 Microsoft 提供的用于将数据迁移到 ASPNetRoles 表的脚本不会填充 NormalizedName 列。 IsInRoleAsync 正在对照此字段检查角色。填充该字段,它应该返回 true。

关于c# - UserManager.IsInRoleAsync 和 UserManager.GetRolesAsync 彼此不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61807503/

相关文章:

c# - 在 ASP.NET Core MVC 中注入(inject) ApplicationUser

angular - .NET Core Identity 不刷新静态文件的 auth cookie 并抛出 500 错误

postgresql - 无法使用 ASP.NET Core 和身份添加声明

c# - ASP.NET Core 2.0 身份,2 个 Controller 分别重定向到不同的登录页面

c# - 如何检查一个xml文件是否包含连续的节点?

c# - 为什么 HttpClient 在随后使用 Polly 重试期间继续失败?

c# - C# 中的库使用图层/蒙版/滤镜组成图像

c# - 从 EWS 或 REST API 使用 office365 JS API 访问 CustomProperties 集

c# - Windows Azure 移动服务数据获取已完成

asp.net-core - 电子邮件未确认的用户仍处于登录状态