#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) {
});