我正在嘗試添加一個簡單的中間件來檢查用戶是否與角色匹配。我快到時,我使用中間件的一個問題,我得到一個異常:Laravel RoleMiddleware,找不到類角色
ReflectionException:類角色不存在
我不試圖調用類命名角色,所以我承擔這在神奇的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表中,我有一個角色字段,並在用戶模式,我有:
/**
* 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?
嘗試'\軟件\ HTTP \中間件\ RoleMiddleware: :class'並執行'dump-autoload',然後告訴我們它是否工作。 –
命名空間很好,它可以到達該類,並且如果我只是使用中間件'角色'而不是'role:admin',它會拋出有關缺少參數的錯誤。 – Devon