首页 > 解决方案 > PasswordSignInAsync 返回 Success 而不是 RequiresVerification

问题描述

我正在尝试在我们的应用程序上设置两因素身份验证。更新了 AspNetUsers 表中的用户并将其 TwoFactorEnabled 值设置为 1 以进行测试。

调试时,signInManager.PasswordSignInAsync只返回“成功”,而不是“需要验证”。

这是行

signInStatus = await signInManager.PasswordSignInAsync(viewModel.Email, viewModel.Password, true, shouldLockout: false);

(通常会回答类似的问题,因为第一个值应该是姓名而不是电子邮件,但我认为这不是问题。登录工作正常,例如,如果密码错误,则返回失败。)

我也将下面的行添加到 Startup.Auth.cs

app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(10));

我仍然可以像这样使用我所拥有的东西(尽管我不想这样做)

    if (signInStatus == SignInStatus.Success && user.TwoFactorEnabled == true)
{
//rest of code to be written
}

但这感觉太临时的解决方案,并且容易出现许多未来错误。我更喜欢使用身份,但由于这个问题我现在不能。

很明显我做错了什么或错过了什么,但我不知道是什么。提前致谢。

标签: asp.net-mvc-5two-factor-authentication

解决方案


SignInManager 在以下情况下返回 RequiresVerification:

  • dbo.ASpnetUsers 已将用户设置为 true TwoFactorEnabled 和 EmailConfirmed,并且应确认用户电子邮件,电子邮件不能为空或为空。

推荐阅读