「MustBeAdmin」と「MustBeUser」と呼ばれる2つのミドルウェアを作成し、ユーザーのログインに応じて正しいページにリダイレクトし、許可されていないコンテンツを制限していることを確認しました。現在、すべて正常に動作しており、リダイレクトもうまく機能しています。しかし、私がシーンの背後に書いた論理は私にとって間違っているように見えます。もし私が一番よく思っているロジックを書いたら、期待通りに動作しないようです。Laravel 5.4ミドルウェア管理者用とユーザー役割
ユーザーテーブル
id (1,2,3,...)
name
role (1,2,3,...)
役割テーブル
id (1,2,3,...)
role (Student, Admin,...)
MustBeAdminミドルウェア
public function handle($request, Closure $next)
{
if($request->user()->role == 2)
{
return $next($request);
}
else
{
return redirect('/admin/users');
}
}
MustBeUserミドルウェア:
public function handle($request, Closure $next)
{
if($request->user()->role == 1)
{
return $next($request);
}
else
{
return redirect('/admin/users');
}
}
kernel.php
'admin' => \App\Http\Middleware\MustBeAdmin::class,
'user' => \App\Http\Middleware\MustBeUser::class,
あなたは私がカーネルにミドルウェアを登録している見ることができるように。
ミドルウェアのロジックが正しいかどうかは確かに私が必要とする結果が得られていますが、疑問です。
1 = Student
2 = Admin
あなたはMustBeAdminミドルウェアで見た場合、私は、ユーザーの役割は、2(管理者)であれば、次の($要求)を行い、ユーザの役割が1(学生)、その後(次に何をされている場合MustBeUserミドルウェアで、私は比較しています比較しています$ request)、私は/ Adminディレクトリにelseを設定しました。
私は間違っていると感じますが、どう思いますか?
なぜ両方とも同じページにリダイレクトされていますか?あなたは管理者とユーザーの他に3番目のエンティティを持っていますか?誰が管理者/ユーザーにリダイレクトされますか? –