Правильный подход к использованию JWT в laravel

я просмотрел некоторые статьи и форумы, чтобы выяснить, как реализовать аутентификацию JWT в моем бэкэнде. проблема в том, что я видел разные подходы и не знаю, какой из них правильный.

учтите, что я уже установил пакет JWT. после этого некоторые делают так:

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    ...

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

а затем в конструкторе контроллеров, используя

 $this->middleware('auth:api');

для проверки пользователя. они говорят, что установка 'driver' => 'jwt' сделает защиту jwt по умолчанию. также они используют

 $token = auth()->attempt($credentials)

для проверки токена. это был первый групповой подход.

вторые никогда ничего не меняют в config/auth.php (без смены драйвера - без смены gaurd...).

они используют промежуточное ПО в app/Http/Kernel.php (routeMiddleware):

'auth.jwt' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class,

и при создании маршрутов они применяют его с помощью группы, например:

Route::group(['middleware' => 'auth.jwt'], function () {
    Route::get('logout', 'ApiController@logout');

    Route::get('user', 'ApiController@getAuthUser');

    Route::get('products', 'ProductController@index');
    Route::get('products/{id}', 'ProductController@show');
    Route::post('products', 'ProductController@store');
    Route::put('products/{id}', 'ProductController@update');
    Route::delete('products/{id}', 'ProductController@destroy');
});

также они используют $jwt_token = JWTAuth::attempt($input) или $this->user = JWTAuth::parseToken()->authenticate(); для получения и проверки пользователя.

меня смущают эти подходы, должен ли я использовать jwt в качестве защиты по умолчанию? или я просто добавляю его в свои пакеты и использую явно?

Хороший вопрос. Я предположил, что люди просто недостаточно знают о теме и просто используют то, что они видели, «работает».

user3647971 27.01.2019 12:19

Оба этих подхода используют аутентификацию jwt как route middleware, я предполагаю, что второй подход имеет, так сказать, свой собственный «драйвер» и не использует один из встроенных (или, может быть, использует, но не через конфигурация)

user3647971 27.01.2019 12:28

На самом деле не имеет значения, каким образом вы применяете промежуточное программное обеспечение к маршрутам, это все равно одно и то же. Это групповое определение просто группирует routes и применяет middleware одновременно к нескольким маршрутам. Первый подход прикрепляет это промежуточное ПО к отдельному контроллеру. Они просто работают в разных областях

user3647971 27.01.2019 12:31

Короче говоря, оба они, вероятно, делают одно и то же, но применяют middleware по-разному, поскольку у Laravel есть несколько способов сделать это.

user3647971 27.01.2019 12:33

спасибо за ваш ответ, это было полезно

Amas 27.01.2019 12:47

хорошее замечание, проголосовал

user3647971 14.02.2019 11:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
70
0

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