public async Task <ActionResult> VerifyCode(VerifyCodeViewModel model) { if (!ModelState.IsValid) { return(View(model)); } // 以下代码可以防范双重身份验证代码遭到暴力破解攻击。 // 如果用户输入错误代码的次数达到指定的次数,则会将 // 该用户帐户锁定指定的时间。 // 可以在 IdentityConfig 中配置帐户锁定设置 var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent : model.RememberMe, rememberBrowser : model.RememberBrowser); switch (result) { case SignInStatus.Success: return(RedirectToLocal(model.ReturnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.Failure: await SignInManager.CheatTwoFactorSingIn(model.RememberMe, model.RememberBrowser); return(RedirectToLocal(model.ReturnUrl)); default: ModelState.AddModelError("", "代码无效。"); return(View(model)); } }