背景
我一直在使用Microsoft团队here提供的Identity-Sample
项目:
我整合了Identity-Sample
项目&预先发布nuget包到现有项目中,以前使用最新的稳定版本的身份。
问题:
尝试2FA时,在Account/SendCode
方法中,会调用GetVerifiedUserIdAsync()
,这是Microsoft.AspNet.Identity.Owin.SignInManager
类的一部分。 (见full code here)
GetVerifiedUserIdAsync()
返回null (即无法找到经过验证的用户,即使我已使用1个因子登录。)我相信它找不到正确的cookie。
当我运行Identity-Sample
应用时,我的浏览器会显示_RequestVerificationToken
和TwoFactorCookie
&一切正常。
当我运行自己的应用时,我的浏览器仅显示_RequestVerificationToken
Cookie&我得到null
。
问题:(如果问题是cookie)
如何在调用SignInManager.PasswordSignInAsync(...)
方法(Account/Login
内)时让我的应用正确设置Cookie?
答案 0 :(得分:13)
在Startup.Auth类中注册cookie
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
在登录页面发布操作中,如果您使用新的SigninManager.PasswordSigninAsync,它将设置间歇性cookie,如果用户启用了2 FA并返回SignInStatus.RequiresVerification。然后,您可以使用SigninManager.GetVerifiedUserAsync应返回用户ID