Мое веб-приложение в настоящее время использует простые формы аутентификации.Неаутентифицированные пользователи возвращаются на страницу входа, вводят свое имя пользователя / pw, и файл cookie создается и передается клиенту.
Из-за некоторых изменений в веб-приложении мне нужно выполнить несколько раз- выполнение действий сразу после проверки имени пользователя / пароля (но до того, как мой контроллер сможет отправить куки обратно клиенту).
Из-за этой временной задержки я хочу немедленно загрузить страницу и показать значок счетчика, в то время как я запускаю AJAX-запрос к конечной точке API для выполнения процесса аутентификации.
ЭтоВот как мой код в настоящее время работает в производстве (используя традиционную аутентификацию форм):
[HttpPost]
public ActionResult Login(string username, string password, string redirectUrl)
{
if (checkUser(username, password))
{
FormsAuthentication.SetAuthCookie(username, true);
return Redirect(redirectUrl);
}
throw new HttpException(401, "Auth Failed.");
}
Но я хочу выполнить это действие в конечной точке API (используя AJAX).Примерно так:
[HttpPost]
public LoginModel Login(string username, string password, string redirectUrl)
{
var loginModel = new LoginModel();
if (checkUser(username, password))
{
FormsAuthentication.SetAuthCookie(username, true);
loginMode.RedirectUrl = redirectUrl;
loginModel.Authenticated = true;
//DO SOME TIME-CONSUMING TASKS RIGHT HERE...
}
}
Однако, когда я пытаюсь что-то подобное, я вижу cookie в заголовке ответа (используя инструменты F12), но я все еще что-то упускаю, так как я не аутентифицирован (Я все еще перенаправлен обратно на страницу входа).
Возможно ли это вообще?Если так, что я пропускаю?Если это невозможно, то каков механизм, позволяющий выполнять аутентификацию с помощью AJAX-вызова, подобного этому?