ASP.NET Core Identity UserManager 使用

我一直在尝试使用 ASP.NET Core Identity 来检查我的数据库中的现有用户,当我调用 FindByEmailAsync 或 UserManager 类上的其他 Find 方法时,即使 AspNetUsers 数据库表为空,它也会找到具有 Id 的实体

我已经仔细检查了我的 Startup.cs 文件,因为我几乎可以肯定它一定是 DI 的东西。但是我在我的服务类中使用了这个 EntityManager,并且这个类被注册为 Scoped。

不管我输入什么参数,总是返回一些实体:

http://img.mukewang.com/637b3ecf0001311a06580086.jpg

我的启动 DI 配置:

我的用户(来自 IdentityUser):

http://img3.mukewang.com/637b3edb0001325706580165.jpg

我的服务注册(我通过 DI 使用 UserManager):

http://img.mukewang.com/637b3ee70001ec1303920054.jpg

我希望这些方法不会找到任何用户实体,但由于某种原因它总是返回非空值。

可能是身份缓存或 DI 问题?


烙印99
浏览 181回答 1
1回答

慕运维8079593

FindByEmailAsync方法返回一个Task,而不是一个用户。如果您检查userExists变量的类型,您将看到它的类型Task<>。因此,该方法不会返回 ID 为 70 的用户,而是返回 ID 为 70 的用户Task。如果修改此行:var&nbsp;userExists&nbsp;=&nbsp;_userManager.FindByEmailAsync("rasfafasf");通过添加await:var&nbsp;userExists&nbsp;=&nbsp;await&nbsp;_userManager.FindByEmailAsync("rasfafasf");您将获得任务的实际结果,即拥有该电子邮件的用户(null在您的情况下)。
打开App,查看更多内容
随时随地看视频慕课网APP