我已经阅读了一些文章和论坛,以了解如何在后端实现JWT身份验证。 问题是我见过不同的方法和idk,哪一种是正确的。
考虑到我已经安装了JWT软件包。 之后,请执行以下操作:
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
...
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
,然后在Controllers构造函数中使用
$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作为默认防护吗?还是我只是将其添加到我的包中并显式使用它?