VariusRain
@VariusRain
музыкант-программист-конструктор

Как заставить работать и web и api авторизацию в Laravel?

Доброго всем дня!
Задача, казалось бы, простая: нужно чтобы работала и обычная веб авторизация методом сессии и jwt авторизация для АПИ методов

настройки:
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

И, соответственно, если ставлю в defaults =
'guard' => 'api',
Работает только АПИ, если web, то только сессии.

В файлах роутов указана мидлваря
api.php
Route::group(['middleware' => ['auth:api']], function()

web.php
Route::group(['middleware' => ['auth:web']], function()

Подскажите пожалуйста, как заставить работать их параллельно?
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
VariusRain
@VariusRain Автор вопроса
музыкант-программист-конструктор
Сам спросил, сам ответил.
Мой ответ, скорее всего, никому не понравится, но для меня это стало решением.
Предложенный в комментариях ларавель паспорт лично мне показался ерундой.

Там же в комментариях предложили вариант написать middleware которая переключает guard по необходимости.

Я же пошёл у себя на проекте по пути наименьшего сопротивления и просто написал свой сервис проверки токенов, поступающих в запросах от АПИ и добавил свою middleware, которая этот сервис дёргает.

Таким образом стандартные веб запросы работают через нативный функционал авторизации Ларавель (веб сессии), а запросы к АПИ работают через самописную JWT авторизацию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы