Логин Laravel / Airlock AJAX - 419 (статус неизвестен)
Я пытаюсь выполнить запрос на вход в систему из другого источника, и все, кроме входа в систему, работает. Итак, если я перейду на api.example.com и войду в систему с помощью приложения laravel, а затем перейду на www.example.com, я смогу получить пользователя, вызвав конечную точку /api/user (настройка как часть шлюза). Что мне не удается сделать, так это войти в систему через AJAX с именем пользователя и паролем. Вот используемый JS:
Сначала я звоню setCSRFCookie()
function setCSRFCookie() {
let xhr = new XMLHttpRequest();
xhr.open('GET', domain+'/airlock/csrf-cookie');
xhr.withCredentials = true;
xhr.send(null);
}
Тогда я звоню loginUser()
function loginUser() {
let xhr = new XMLHttpRequest();
let params = 'username=m@example.com&password=password';
xhr.open('POST', domain + '/login', true);
xhr.withCredentials = true;
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send(params);
}
Я получаю 419 (unknown status)
который, по-видимому, является ответом Laravel на недопустимый токен CSRF. Я посмотрел на фактический запрос, и обаAPP_NAME_session
а также XSRF-TOKEN
передаются как часть запроса. Я думал только о том, что/login
маршрут аутентификации по умолчанию для этого не настроен, и мне нужно сделать его под /api/login
так что он обслуживается промежуточным программным обеспечением воздушного шлюза. Я ценю любую помощь, которую вы можете оказать.
Laravel 6.12.0 Воздушный шлюз 0.1.0
1 ответ
Удостовериться api.example.com
входит в config/airlock.php
как это
'stateful' => [
'localhost',
'api.example.com'
],
И промежуточное ПО запроса должно быть auth:airlock