laravelpro_セキュリティと認証

12セキュリティと認証

認可について

認証されたユーザーが特定のリソースに対して更新などの処理を許可することを認可といいます。先ほど「現在のユーザーとメモを書いたユーザーが一致した場合削除できる」というのも認可になります。

先ほどの例はかなり分かりやすいですが、もしユーザーに「有償ユーザー」や「管理者ユーザー」といったタイプが出てきた場合どうなるでしょうか。例えば管理ユーザーと有償の投稿ユーザーが削除できるようにしたい場合、先ほどの記載方法だと

/**
* $current_user_typeに
*「管理者(admin)」「有償ユーザ(billing)」「一般(general)」
* のどれかが入っているとします
*/

// 管理者ユーザーと有償ユーザーのみが削除できる
@if(($current_user_id === $memo->user_id && $current_user_type === "billing")
|| $current_user_type === "admin")

複雑な条件分岐をそのまま書くことになります。さらに「投稿から24時間以内なら削除できる」といった条件などを追加していくとさらに複雑になってきます。これらの認可を色々な機能で実施する場合、想定していない操作が行われたりしてしまいます。また、変更する際にはかなりの労力がかかってしまいます。

そこでLaravelにある「ポリシー」という認可を管理するクラスを利用してみましょう。ポリシーは特定の動作に対する認可ロジックを共通化することができます。

ポリシーを作成する


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です