我正在尝试让Laravel使用多个卫士--这取决于身份验证类型。
当我通过API进行身份验证时,我希望使用jwt guard。当我通过web进行身份验证时,我想使用session guard。
我的config\auth.php看起来像这样:
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
//'hash' => false,
],
],'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
]我的routes/web.php看起来像这样:
Route::get('/', 'HomeController@index')->name('home');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');我的routes/api.php看起来像这样:
Route::post('login', 'AuthController@login');
Route::get('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::get('me', 'AuthController@me');我得到的是应用程序接口身份验证工作得很好,而web却不行。我已经调试过了,它似乎总是在检查jwt防护。
有人能帮我吗?如果可能,我如何在路由或Auth::routes()呼叫上设置守卫?
发布于 2020-09-19 16:43:38
我已经通过将默认路由切换为web路由解决了这个问题。
然后,我更新了app/Http/Controllers/AuthController.php的代码,以便在使用auth方法的任何地方使用特定的api身份验证:
auth('api')->attempt($validator->validated())和'expires_in' => auth('api')->factory()->getTTL() * 60
https://stackoverflow.com/questions/63963071
复制相似问题