Аутентификация на основе файлов 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 заголовок.

Другие вопросы по тегам