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