Я пытаюсь сделать запрос на вход в систему из разных источников, и все, кроме входа в систему, работает. Так что если я go на api.example.com и войду в систему с приложением laravel, а затем go на 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