如何实现有条件的ASP Net Identity两因素身份验证

时间:2019-05-16 13:03:07

标签: c# identity

我正在通过使用电话号码在Asp MVC应用程序中实现2FA。到目前为止,我可以收到身份验证代码并进行验证,而不会出现问题。我希望每天仅向用户询问一次2FA的问题。我在AspNetUser表中添加了另一列,用于检查是否需要用户进行验证。但是问题是在检查2FA不需要用户后,它再次重定向到登录页面。

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:                    

                    return RedirectToLocal(model.ReturnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    if (CheckRequiresVerification(model.UserName))
                    {
                        return RedirectToAction("SendCode", new { ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe });
                    }
                    return RedirectToLocal(model.ReturnUrl);
                case SignInStatus.Failure:
                default:
                    //Log login attempt
                    ModelState.AddModelError("", "Invalid login attempt.");

                    return View(model);
            }

在上述切换语句中,SignInStatus.RequiresVerification调用另一个函数来查看用户是否必须提供验证码。如果不是,则调用RedirectToLocal(model.ReturnUrl)方法,但它代替登录用户,而是将用户再次重定向到登录页面。我以为这是因为用户尚未登录。 关于如何完成此任务的任何想法。

0 个答案:

没有答案