【问题标题】:Is calling UserManager.IsEmailConfirmedAsync() always required?是否始终需要调用 UserManager.IsEmailConfirmedAsync()?
【发布时间】:2022-01-29 00:41:50
【问题描述】:

我见过很多代码示例如下:

var user = await userManager.FindByNameAsync(userName);
bool emailConfirmed = userManager.IsEmailConfirmedAsync(user);

我想知道为什么需要第二次调用。在我的测试中,user.EmailConfirmed 属性总是在第一次调用后正确设置。

是否存在第一次调用无法正确设置属性的情况?

【问题讨论】:

    标签: c# asp.net-identity asp.net-core-webapi asp.net-core-3.1


    【解决方案1】:

    在您的情况下,函数调用不是必需的,因为数据存储在您的数据库中并由 FindBy... 调用返回,正如您所指出的那样。

    该函数的目的是用于自定义 UserManager 实现,该实现可能需要查询外部系统(例如电子邮件验证微服务)以确定电子邮件地址是否已经过验证。该函数实际上更像是 UserManager 界面中的占位符,用于可能实现附加功能的其他解决方案 - 或用于使用模拟进行单元测试。

    在你的情况下,你没有理由打电话。

    【讨论】:

    • 即使对于单元测试,您也可以直接模拟 FindBy 调用的输出,因此您可以在不使用 .IsEmailConfirmedAsync 调用的情况下获得完全可测试的代码。
    猜你喜欢
    • 2011-02-07
    • 2013-12-21
    • 2013-02-03
    • 1970-01-01
    • 2014-09-17
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多