戻る
2021-03-20
Laravel

マルチ認証は使わない

日本語でも英語でもLaravelでのよくある質問はマルチ認証。が、そもそもマルチ認証は使わなくていい。誰が意味のないことを教えているのか。

Laravelで「管理者権限のためのマルチ認証」は使う必要が一切ないのでマルチ認証使ってる人は100%参考にしてる情報を間違ってる。

マルチ認証の前に認可機能を覚えるのが先。

認証はログインしてるかしてないか。
認可はログインしてるユーザーに対して〇〇ができるかどうか。
「管理画面にアクセスできるかどうか」なんてことは認可でやること。

「他のフレームワークでは認可機能がなかったからマルチ認証で代用していた」だけなのに他のフレームワークの知識だけでLaravel使ってるから壮大に間違えてる。

Laravel公式ではHorizonでもTelescopeでも認可しか使ってない。

同じようにメールでもIDでもいいので管理者の認可を作れば

    Gate::define('superAdmin', function ($user) {
        return in_array($user->email, [
            'admin@example.com',
        ]);
    });
    Gate::define('superAdmin', function ($user) {
        return $user->id === 1;
    });

ルーティングでもコントローラーでもビューでもどこでも管理者かどうかを確認できる。

Route::get('admin', AdminController::class)
     ->middleware('can:superAdmin');

マルチ認証使ってる人はとてつもなく無駄なことをしているだけ。

認可の追加は5.1の途中

5.1は初のLTS。普通なら途中でこんな大きな新機能は追加しない。本来なら5.2で追加するような機能を追加したのはそれだけ認可が重要だから。

バージョンの途中でこんなアップグレード作業が必要だったのはこれが最後。

投稿者 Invokable
コメントを書くにはログインしてください。
登録 ログイン