ASP.NET身份两个因素不起作用 - Cookie问题?

时间:2014-07-04 17:48:49

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

背景

我一直在使用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应用时,我的浏览器会显示_RequestVerificationTokenTwoFactorCookie&一切正常。

当我运行自己的应用时,我的浏览器仅显示_RequestVerificationToken Cookie&我得到null

问题:(如果问题是cookie)

如何在调用SignInManager.PasswordSignInAsync(...)方法(Account/Login内)时让我的应用正确设置Cookie?

1 个答案:

答案 0 :(得分:13)

在Startup.Auth类中注册cookie

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

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