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。