ロールを持っているユーザーにのみ許可するミドルウェアを作成しました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]',
]);
});
});
ロールがクライアントではない場合、そのルートにアクセスできるようにするべきではありません。
編集私は他のミドルウェアを==で変更したので、上記の質問は解決しました。しかし、以下のミドルウェアは、私の役割がインタビュアーであっても、私がルートにアクセスすることを制限しています。
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がどのように動作するかです。あなたの新しい問題に関して、あなたはタイプミスをしています、それは 'role'でなければなりませんが、' roles'ではありません。 –
Oh my。それは愚かな間違いでした。ありがとうございました –