Могу ли я использовать свою конечную точку веб-API для завершения проверки подлинности через AJAX? - PullRequest
0 голосов
/ 26 августа 2018

Мое веб-приложение в настоящее время использует простые формы аутентификации.Неаутентифицированные пользователи возвращаются на страницу входа, вводят свое имя пользователя / 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-вызова, подобного этому?

...