我創建了一箇中間件,允許用戶只有在他們有角色client
。 但是,當我使用中間件它仍然讓用戶訪問沒有客戶端角色的路由。Laravel中間件不限制路由訪問
public function handle($request, Closure $next)
{
$user = \Auth::user();
if ($user && $user->role = 'client') {
return $next($request);
}
return redirect('home');
}
這是我的路線。我和其他可以正常工作的中間件做了同樣的事情。但不是這樣
Route::group(['middleware'=>['auth']],function(){
Route::group(['middleware'=>['client']],function(){
Route::get('/index',[
'as' => 'index',
'uses' => '[email protected]',
]);
});
});
當角色不是客戶端時,它不應該讓訪問路由,但它會。
編輯來自alexey的回答我用==改變了我的其他中間件,上面的問題解決了。但即使我的角色是面試官,下面的中間件仍然限制我訪問該路線。
public function handle($request, Closure $next)
{
$user = \Auth::user();
if($user && $user->roles == 'interviewer'){
return $next($request);
}
return redirect('home');
}
這裏是我的路線
Route::group(['middleware'=>['auth','interviewer']],function(){
Route::get('/candidates', [
'uses' => '[email protected]',
]);
});
什麼是可能的錯誤我在這裏做。當在訪問中間件中使用=
,在客戶端中間件中使用==
,並且在反之亦然時不工作時,它正常工作。
看到編輯的問題@alexey mezenin –
這是另外一個問題,將來請創建任何新的問題,另外一個問題,那就是如何SO工作。關於你的新問題,你有一個錯字,它應該是'角色',但不是'角色' –
哦,我的。這是一個愚蠢的錯誤。謝謝 –