CakePHP3でisAuthorizedファンクションを通らないときの対処
CakePHP3での話です。
コントローラに記述するisAuthorizedファンクションってありますよね。
アクセス制御などを行うファンクションです。
ここを上手く処理が通ってくれないことがありました。
処理が止まるとかではなく、全く処理が通過する気配がなかったんです。
そういうときの対処をお伝えします。
【自分の環境】
macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7
beforeFilterファンクションでloginアクションが入っていないか確認する
これを確認してください。
正直これだけです。
beforeFilterファンクションはisAuthorizedファンクションとは逆で、全部処理を通すよ、というファンクションです。
なので関連があると言って良いでしょう。
公式ドキュメントを見るとbeforeFilterファンクションのところにこう書いてあります。
>allow のリストに "login" アクションを追加しないでください。
>そうすると AuthComponent の正常な機能に問題が発生します。
これは認証と認可をするAuthComponentが上手く動作しなくなるということです。
自分はよくわからずlogin画面は認可されていないユーザーでもみんなアクセスしたい…と思って足していました。
するとisAuthorizedに処理が通らなくなってしまっていました。
気をつけたいです。
終わりに
以上となります。
地味な点ですが、セキュリティに大きな影響を及ぼすので気をつけたいです。
ありがとうございました。