Аутентификация на основе файлов cookie Vue в Laravel
Из чтения документации Laravel кажется, что при использовании Sanctum Vue будет просто использовать аутентификацию на основе файлов cookie.
Я пытался переместить существующее приложение (с входом в систему с помощью Livewire) на Vue, но вызовы, направленные прямо на мою первую конечную точку api, перенаправлялись на страницу входа.
Итак, я создал чистую установку Larvel, установил Breeze (с Inertia), затем Sanctum, опубликовал конфигурацию и т. Д.
Но когда я вхожу в систему, а затем посещаю свою тестовую конечную точку (которая просто возвращает 200 Ok), она перенаправляется на страницу входа (которая, поскольку я вошел в систему, перенаправляет на панель управления Breeze).
Нужно ли мне делать что-либо вручную для моей конечной точки, охраняемой
auth:sanctum
Обновлять
Я установил
axios.defaults.withCredentials
401 Unauthorized
. Мой app.js:
axios.defaults.withCredentials = true;
axios.get('/api/test')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});
1 ответ
Сначала убедитесь, что конфигурация CORS вашего приложения возвращает
Access-Control-Allow-Credentials
заголовок со значением
True
. Это можно сделать, установив
supports_credentials
вариант в вашем приложении
config/cors.php
файл конфигурации в
true
.
Затем, если вы используете Axios, вы должны включить
withCredentials
вариант на вашем экземпляре axios:
axios.get('some api url', {withCredentials: true});
или глобально:
axios.defaults.withCredentials = true;
Если вы не используете Axios для выполнения HTTP-запросов из своего внешнего интерфейса, вам следует выполнить аналогичную настройку на своем собственном HTTP-клиенте .
Справочник по документации Laravel .
Если вы используете Postman для тестирования своего API, вот умная реализация запросов аутентификации sanctum. Обычно вам нужно сначала получить cookie-файл Sanctum, а затем отправить его на
XSRF-TOKEN
заголовок.