есть ли способ иметь sanctum в разных доменах

#laravel #cookies #single-page-application #laravel-sanctum

#laravel #файлы cookie #одностраничное приложение #laravel-sanctum

Вопрос:

У меня есть spa в домене A и сервер Laravel в домене B Я хотел использовать sanctum, но файлы cookie работают только в тех же доменах, так что вы предлагаете, есть ли какой-нибудь способ обойти это? и я не хочу использовать аутентификацию базы токенов в sanctum

Ответ №1:

Нет, нет способа обойти использование межсайтовых файлов cookie. Это функция безопасности. Вам придется реализовать собственную аутентификацию или использовать тот же TLD.

Ответ №2:

Да, возможно, вы можете использовать авторизацию вместо cookie

Laravel Sanctum предлагает эту функцию, сохраняя пользовательские токены API в одной таблице базы данных и аутентифицируя входящие HTTP-запросы через заголовок авторизации, который должен содержать действительный токен API.

но это невозможно с помощью cookie и не масштабируется, поскольку сеанс хранится на одном сервере. если вы используете несколько серверов.

Пример :

я беру сервер 1 и сервер 2, если вы сохранили сеанс на сервере 1, когда вы используете один и тот же файл cookie, а сеанс на сервере 2 не знает, что server2 означает, что ваш недопустимый пользователь.

итак, мое предложение — использовать JWT или токен sanctum вместо cookie. просто используйте

   $user->createToken($request->device_name)->plainTextToken;
  

приведенный выше код генерирует токен и сохраняется в базе данных, вы просто отправляете тот же токен клиенту для проверки.

Для проверки просто используйте

 Authorization: Bearer <token>
  

ваш route guard автоматически проверяет токен

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