Как я могу указать охранника в промежуточном программном обеспечении для маршрута?

У меня есть два маршрута следующим образом:

Route::GET('admins/', 'UserController@index')->middleware('jwt.auth');
Route::GET('visitors', 'UserController@indexVisitors')->middleware('jwt.auth');

И у меня есть охранники в auth.php:

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'jwt-auth',
'provider' => 'users',
],
'visitor_api' => [
'driver' => 'jwt-auth',
'provider' => 'visitors',
],
],

Я попытался указать охранника в промежуточном программном обеспечении, но он не работает.

Route::GET('visitors', 'UserController@indexVisitors')
->middleware('jwt.auth.visitors_api');

0

Решение

Если вы хотите установить защиту по умолчанию через Route::group тогда вы можете использовать ниже синтаксис

Route::group(['middleware' => ['web','auth:visitor_api'], 'prefix' => 'visitor'], function() {
Route::get('/home', 'VisitorController@index')->name('home');
Route::get('/list', 'VisitorController@list')->name('list');
});

после этого вы можете использовать Auth::id() вместо Auth::guard('visitor_api')->id() в вашем VisitorController.

1

Другие решения

Я думаю, это то, что вы хотите

Route::GET('visitors', 'UserController@indexVisitors')->middleware('auth:visitors_api');

Вы можете указать охрану, передав его в качестве параметра (после символа двоеточия)

Вы можете обратиться к документации по Laravel:

https://laravel.com/docs/5.6/authentication

Под Аутентификацией Быстрый старт> Защита маршрутов> Задание защиты

0

По вопросам рекламы [email protected]