asp.net-mvc-5 - 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
}
但这感觉太临时的解决方案,并且容易出现许多未来错误。我更喜欢使用身份,但由于这个问题我现在不能。
很明显我做错了什么或错过了什么,但我不知道是什么。提前致谢。
解决方案
SignInManager 在以下情况下返回 RequiresVerification:
- dbo.ASpnetUsers 已将用户设置为 true TwoFactorEnabled 和 EmailConfirmed,并且应确认用户电子邮件,电子邮件不能为空或为空。
推荐阅读
- python - 为什么我会收到“分配前引用”错误?
- javascript - Stripe Connect 转账:资金不足
- google-apps-script - 使用 FilePicker 选择文件后获取版本号
- javascript - 如何自动点击元素
- asp.net-mvc - Umbraco 7 - 按返回 null 的名称获取父节点
- java - 如何进行适当的单元测试?
- c++ - 需要帮助在 C++ 中生成深度有限的随机表达式树
- c - 如何在不使用 goto 关键字的情况下编写 C 代码?
- python - 结合 Conda 环境文件和 Pip 时,运行 Pip 安装时 Conda 环境是否处于活动状态?
- django - 如何在 Atom 文本编辑器中为 django 模板文件启用语法突出显示?