Я пытаюсь добавить простое промежуточное программное обеспечение, чтобы проверить, соответствует ли пользователь роли. Я сталкиваюсь с проблемой, когда я использую промежуточное ПО, я получаю исключение:
ReflectionException: роль класса не существует
- Laravel 5 Сессия, работающая в Postman, не работает, если вызвана из браузера
- Laravel 5: как я могу получить и отобразить все сообщения, относящиеся к определенной категории
- Какова наилучшая практика создания пользовательской вспомогательной функции в php Laravel 5?
- Использовать функцию иногда () в классе запросов Laravel 5
- Laravel 5 - htaccess Переадресация HTTPS на почтовые маршруты не работает.
Я не пытаюсь вызвать класс с именем role, поэтому я предполагаю, что это происходит в магическом режиме в Laravel.
Мое промежуточное ПО:
class RoleMiddleware { /** * Run the request filter. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string $role * @return mixed */ public function handle($request, Closure $next, $role) { if (! $request->user()->is($role)) { return redirect('/login'); } return $next($request); } }
В таблице users у меня есть поле ролей, а в модели User у меня есть:
/** * Check if a user is a certain role * * @param $role * @return bool */ function is($role) { return ($this->role == $role); }
Группа маршрутов:
Route::group(['prefix' => 'support', 'middleware' => ['role:admin', 'web']], function() { Route::get('threads', 'ThreadController@index'); });
В Http / Kernel.php:
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], 'role' => [ RoleMiddleware::class, ], ];
У кого-нибудь есть идеи о том, что может вызвать это ReflectionException?