ASP.NET标识双因素不起作用-Cookie问题?

ASP.NET标识双因素不起作用-Cookie问题?,.net,asp.net-mvc-5,asp.net-identity,two-factor-authentication,.net,Asp.net Mvc 5,Asp.net Identity,Two Factor Authentication,背景: 我一直在使用微软团队提供的身份样本项目: 我已经将Identity示例project&prerelease-nuget包集成到一个现有的项目中,该项目以前使用的是Identity的最新稳定版本 问题: 尝试2FA时,在Account/SendCode方法中,会调用GetVerifiedUserIdAsync(),它是Microsoft.AspNet.Identity.Owin.SignInManager类的一部分。(见附件) GetVerifiedUserIdAsync()返回null(

背景:

我一直在使用微软团队提供的
身份样本
项目:

我已经将
Identity示例
project&prerelease-nuget包集成到一个现有的项目中,该项目以前使用的是Identity的最新稳定版本

问题:

尝试2FA时,在
Account/SendCode
方法中,会调用
GetVerifiedUserIdAsync()
,它是
Microsoft.AspNet.Identity.Owin.SignInManager
类的一部分。(见附件)

GetVerifiedUserIdAsync()
返回null
(即,即使我使用1个因素登录,它也找不到经过验证的用户。)我认为它找不到正确的cookie。

当我运行
Identity Sample
应用程序时,我的浏览器会显示一个
\u RequestVerificationToken
two-factorcookie
&一切正常

当我运行自己的应用程序时,我的浏览器只显示
\u RequestVerificationToken
cookie&我得到
null

问题:(如果cookie是问题所在)


当调用
SignInManager.PasswordSignInAsync(…)
方法(在
Account/Login
内部)时,如何让我的应用程序正确设置cookie?

在Startup.Auth类中注册cookie

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

在登录页面post操作中,如果使用新的SigninManager.PasswordSigninAsync,则如果在用户上启用了2 FA,它将设置间歇cookie并返回SignInStatus.RequiresVerification。然后可以使用SigninManager.GetVerifiedUserAsync返回用户ID

我很困惑
GetVerfiedUserIdAsync()
如果您没有验证您的用户(您说您只做了1个factor),那么问题出在哪里呢?感谢您的关注——我相信GetVerifiedUserIdAsync()应该在使用1个factor登录时提供用户ID(user.Identity.GetUserId())。微软团队提供的示例应用程序似乎就是这样做的……为了澄清这一点,如果有人有见解,我们仍在寻找答案……1>我已致电SigninManager.PasswordSigninAsync;2> 我正在接受SignInStatus.RequiresVerification。3> 但是当我调用Wait SignInManager.GetVerifiedUserIdAsync()时,我得到了null;我做错了什么?我和@TazbirBhuiyan有同样的问题。我让它工作了几次,但它停止了。我遇到了这个问题,这是因为我在设置cookie之前,在与用户名/密码POST相同的请求中调用了SignInManager.GetVerifiedUserIdAsync()。如果此时需要用户Id,可以使用_userManager.findbyemailsync()并传入用户名,然后使用响应获取用户Id。