Ich versuche, eine einfache Middleware hinzuzufügen, um zu überprüfen, ob ein Benutzer mit einer Rolle übereinstimmt. Ich bin in ein Problem laufen, wenn ich die Middleware verwenden, erhalte ich eine Ausnahme:Laravel RoleMiddleware, Klassenrolle nicht gefunden
Reflection: Klassenrolle nicht
ich nicht versuchen, existiert eine Klasse namens Rolle zu nennen, so nehme ich an das passiert magisch irgendwo in Laravel.
Meine Middleware:
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);
}
}
In der Benutzer-Tabelle habe ich eine Rolle Feld und in dem Modell Benutzer ich habe:
/**
* Check if a user is a certain role
*
* @param $role
* @return bool
*/
function is($role) {
return ($this->role == $role);
}
Die Route Gruppe:
Route::group(['prefix' => 'support', 'middleware' => ['role:admin', 'web']], function() {
Route::get('threads', '[email protected]');
});
In 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,
],
];
Haben Sie irgendwelche Ideen, was diese ReflectionException verursachen könnte?
Try '\ App \ Http \ Middleware \ RoleMiddleware: : Klasse 'und Execute' Dump-Autoload' auch, dann sagen Sie uns, ob es funktioniert. –
Der Namespace ist in Ordnung, er kann die Klasse erreichen und es wird ein Fehler über das fehlende Argument ausgelöst, wenn ich nur die Middleware-Rolle anstelle von Rolle: Admin verwende. – Devon