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 の正常な機能に問題が発生します。

シンプルな認証と認可のアプリケーション - 3.9

これは認証と認可をするAuthComponentが上手く動作しなくなるということです。

自分はよくわからずlogin画面は認可されていないユーザーでもみんなアクセスしたい…と思って足していました。

するとisAuthorizedに処理が通らなくなってしまっていました。

気をつけたいです。

終わりに

以上となります。

地味な点ですが、セキュリティに大きな影響を及ぼすので気をつけたいです。

ありがとうございました。