Invokable > 戻る
2021-03-20
Laravel

マルチ認証は使わない

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

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

マルチ認証の前に認可機能を覚えるのが先。
https://readouble.com/laravel/8.x/ja/authorization.html

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

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

Laravel公式ではHorizonでもTelescopeでも認可しか使ってない。
https://readouble.com/laravel/8.x/ja/horizon.html#dashboard-authorization
https://readouble.com/laravel/8.x/ja/telescope.html#dashboard-authorization

同じようにメールでも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');

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

  1. 認可の追加は5.1の途中

認可の追加は5.1の途中

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

https://readouble.com/laravel/5.1/ja/releases.html
https://readouble.com/laravel/5.1/ja/upgrade.html

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

投稿者 Invokable
0件のコメントを読むにはログインしてください。
登録 ログイン