У меня есть форма входа в систему, к которой мой проект направляется, когда пользователь не аутентифицирован. Аутентификация кэшируется и проверяется при каждом действии. Если пользователь не аутентифицирован, он направляется обратно на экран входа в систему с routeUrl
, пропущенным через URL. Если пользователь не прошел проверку подлинности при начальной загрузке, routeUrl
имеет значение NULL, и я использую RedirectToAction
для перехода к исходному сообщению, зарегистрированному на странице.
При отладке, при первом прохождении я предоставляю правильные учетные данные и нажимаюавторизоваться. Проходя через, я могу убедиться, что строка
return RedirectToAction("Index", "Home", new { Area = "Client" });
выполнена. Но отладчик никогда не достигает моей точки останова, установленной в строке назначения контроллера Client / Home / Index. Я жду, и в конечном итоге время ожидания истекает.
На втором проходе с отладчиком аутентификация кэшируется, и проект направляет меня прямо в Client / Home / Index без проблем.
При развертыванииэто поведение отличается. Весь процесс входа в систему занимает около 90 секунд после нажатия кнопки, что не должно занять больше 5 секунд. Я пытаюсь отладить это, но, как уже говорилось ранее, после того, как мое действие входа в систему аутентифицирует и вызывает перенаправление, перенаправление не происходит. Браузер просто бездействует с вращением счетчика, и я не могу правильно отладить.
Вот код.
[HttpPost]
[AllowAnonymous]
//[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(model.ReturnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Функция RedirectToLocal
:
public ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home", new { Area = "Client" });
}
Мой основной Индекс Home Controller Действие, которое работает при перенаправлении на ту же страницу, если пользователь уже аутентифицирован.
public ActionResult Index()
{
return RedirectToAction("Index", "Home", new { Area = "Client" });
}