Laravel неавторизованный возврат по второму запросу - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь создать СПА. Я использую Laravel API для бэкэнда и Nuxt. js для внешнего интерфейса. Я хочу аутентифицировать пользователей через Laravel Sanctum. Я запускаю бэкэнд на localhost: 8000 и интерфейс на localhost: 3000. SANCTUM_STATEFUL_DOMAINS установлен на localhost: 3000, SESSION_DOMAIN установлен на localhost, а SESSION_DRIVER настроен на готовку ie.

Я создал вход и выход из системы в своем приложении, и все работает отлично, пока я не сделаю первый запрос после входа в систему. Я просто хотел, чтобы мое приложение возвращало всех пользователей:

Route::middleware('auth:sanctum')->get('/users', function() { return User::all(); });

, но оно возвращает 401 без аутентификации. Я не знаю, почему это происходит. Маршрут, используемый для возврата вошедшего в систему пользователя, использует то же промежуточное ПО:

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

и отлично работает (Nuxt возвращает зарегистрированного пользователя при каждом изменении страницы). Я вызвал пользователя route с помощью ax ios:

axios.get('http://localhost:8000/api/users')

Что может вызвать эту проблему? Это очень расстраивает, потому что я изо всех сил пытался заставить работать вход и выход из системы.

Я также думал о запуске API на api.domain.test и интерфейсе на domain.test, но можно ли подключить такой домен в Nuxt локально?

1 Ответ

0 голосов
/ 22 июня 2020

Он возвращается неавторизованным, потому что вызов конечной точки не имеет токена доступа пользователя.

Идея состоит в том, что при входе в систему auth:sanctum возвращает токен доступа клиенту, чтобы он мог его использовать для доступа к данным во всех его следующих вызовах.

Для этого вам необходимо использовать модуль аутентификации в nuxt check this

Проблема, с которой вы столкнетесь в следующий раз заключается в том, что у SPA нет промежуточного программного обеспечения, поэтому вам нужно установить свое приложение как универсальное вместо спа, чтобы иметь возможность использовать промежуточное ПО на стороне клиента

...