2021-03-20
Laravel
マルチ認証は使わない
4年前の記事です。
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で追加するような機能を追加したのはそれだけ認可が重要だから。
バージョンの途中でこんなアップグレード作業が必要だったのはこれが最後。