Как реализовать двухфакторную аутентификацию ASP Net Identity с условием - PullRequest
0 голосов
/ 16 мая 2019

Я использую 2FA в приложении Asp MVC, используя номер телефона.До сих пор я могу получить код аутентификации и проверить без проблем.Проблема, которую я хочу, чтобы пользователь спрашивал 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);
            }

В приведенном выше случае оператора switch SignInStatus.RequiresVerification вызывает другую функцию, чтобы определить, должен ли пользователь предоставить код подтверждения.или нет.Если не вызывается метод RedirectToLocal (model.ReturnUrl), но вместо входа в систему пользователь перенаправляет пользователя на страницу входа снова.Я думал, что это потому, что пользователь еще не авторизован.Любая мысль о том, как выполнить эту задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...