Я пытаюсь добавить простое промежуточное программное обеспечение, чтобы проверить, соответствует ли пользователь роли. Я бегу на вопрос, когда я использую промежуточное, я получаю исключение:Laravel RoleMiddleware, роль класса не найден
ReflectionException: классовая роль не существует
Я не пытаюсь вызвать роль класса, названный так я полагаю, это происходит волшебным образом в Ларавеле.
Мой промежуточного слоя:
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);
}
}
В таблице пользователей, у меня есть поле роль и в модели пользователя у меня есть:
/**
* 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', '[email protected]');
});
В 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?
Try '\ App \ Http \ Middleware \ RoleMiddleware: : class' и execute 'dump-autoload' также, а затем сообщите нам, если он работает. –
Пространство имен прекрасно, оно может дойти до класса, и оно вызывает ошибку в отношении отсутствующего аргумента, если я просто использую роль middleware вместо роли: admin. – Devon