私はlaravel-permissionパッケージを使用しています。私は2つのロールadmin
とuser
を作成し、admin
ロールに許可Access CMS
を関連付けました。私はまた、admin
ロールとuser
ロールを持つ2人のユーザーを作成しました。laravel-permissionを持つLaravelのロール
私はAdminMiddleware
の後ろにすべての私のadmin
ルートを入れている:
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'isAdmin']], function() {
// Routes
}
ミドルウェアはthis tutorialから来ている:
public function handle($request, Closure $next)
{
if (!Auth::user()->hasPermissionTo('Access CMS')) {
die('aargh');
}
return $next($request);
}
これはadmin
ロールを持つユーザーで動作します。問題は、私が他のユーザとログインしたときに、die
(これはすべきである)が、ユーザはログインしたままであるということです。この試行後にAuth::user()
をエコーアウトすると、admin
ユーザーが表示されます。私が期待しているのは、ユーザーがまったくログインしていないことを防ぐことです。私は何が欠けていますか?
なぜあなたはそのルートへのアクセス許可を持っていないユーザー認証をログに記録しますか? IMOでは、このユーザを特定のページにリダイレクトし、アクセス権がないというエラーを表示します: 'return redirect() - > route( 'home') - > withErrors ['アクセスなし']' –
私のポイントそのミドルウェアにヒットした時点で、ユーザーはすでにログインしています。ミドルウェアに 'return'ステートメントを置くと、ユーザーはまだログインしています。 – GluePear