为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET Core Identity UserManager 使用

ASP.NET Core Identity UserManager 使用

C#
烙印99 2022-11-21 17:02:32
我一直在尝试使用 ASP.NET Core Identity 来检查我的数据库中的现有用户,当我调用 FindByEmailAsync 或 UserManager 类上的其他 Find 方法时,即使 AspNetUsers 数据库表为空,它也会找到具有 Id 的实体我已经仔细检查了我的 Startup.cs 文件,因为我几乎可以肯定它一定是 DI 的东西。但是我在我的服务类中使用了这个 EntityManager,并且这个类被注册为 Scoped。不管我输入什么参数,总是返回一些实体:我的启动 DI 配置:我的用户(来自 IdentityUser):我的服务注册(我通过 DI 使用 UserManager):我希望这些方法不会找到任何用户实体,但由于某种原因它总是返回非空值。可能是身份缓存或 DI 问题?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

FindByEmailAsync方法返回一个Task,而不是一个用户。如果您检查userExists变量的类型,您将看到它的类型Task<>。因此,该方法不会返回 ID 为 70 的用户,而是返回 ID 为 70 的用户Task。如果修改此行:

var userExists = _userManager.FindByEmailAsync("rasfafasf");

通过添加await

var userExists = await _userManager.FindByEmailAsync("rasfafasf");

您将获得任务的实际结果,即拥有该电子邮件的用户(null在您的情况下)。


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信