返回正確SignInStatus根據MSDN無法配置UserCookie爲雙因素身份驗證
無論是本地登錄和社交日誌中檢查,看是否被啓用2FA。如果啓用2FA,SignInManager登錄方法將返回SignInStatus.RequiresVerification,並且用戶將被重定向到SendCode操作方法,在那裏他們必須輸入代碼才能完成登錄順序。 如果用戶在用戶本地Cookie上設置了RememberMe,SignInManager將返回SignInStatus.Success,並且他們不必經過2FA。
我不希望用戶能夠使用應用程序的記得我的功能,但我無法弄清楚如何獲得的cookie,以便SignInStatus返回RequiresVerifacation溝此設置。實際上,我甚至不能100%確定該Cookie正在導致它。我所知道的是我已經啓用了TFA,並且在AspUsers表中,我可以看到TwoFactorEnabled設置爲true,但狀態總是以成功的形式返回。
這裏是哪裏,我沒有得到我想要
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
// Sign in the user with this external login provider if the user already has a login
var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });
case SignInStatus.Failure:
default:
// If the user does not have an account, then prompt the user to create an account
ViewBag.ReturnUrl = returnUrl;
ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email });
}
}
根據this MSDN page VAR結果應該返回SignInStatus.RequiresVerification什麼控制器,但它返回成功當從返回的OAuth從谷歌簽署或只是一個普通的登錄。用戶在AspUsers表中將其TwoFactorEnabled設置爲true,這是根據文檔檢查的結果。
您是否在代碼中調用登錄方法? –