Правильный подход к использованию JWT в Laravel - PullRequest
0 голосов
/ 27 января 2019

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

считают, что я уже установил пакет 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 в качестве защиты по умолчанию?или я просто добавляю его в свои пакеты и использую его явно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...