ErrorControllerでログインユーザー情報が取得できない。

CakePHP

Authentication Component 2.xでErrorControllerでログインユーザー情報が取得できない問題に直面しました。
エラー画面でもユーザー情報を表示するためにログイン情報が欲しいのだけなのですが、
$this->Authentication->getResult()->getData();
をコールすると内部でエラーが発生してしまって、どうにもならない。
軽くコアまで追ってみたんだけど、前提として何かの情報が抜けているようでエラーになる模様。

気になるのはCakeのもともとのコードで
ErrorController::initialize()メソッドでparent::initialize();が無いのが気になる。意味があって読んでないのかどうなのか。
もちろんparent::initialize();が無かったらコンポーネントが読みこまれないので
$this->loadComponent(‘Authentication.Authentication’);
をコントローラーで記載したりparent::initialize();を読んだりしてみたけど、どうやってもダメみたいでした。

多分バグだと思うんですが、どうも新しいAuthComponentはいろいろ怪しいところが多い。
暇だったら追いたいんだけど、ちょっと忙しいので別の方法で解決します。

解決策

解決というわけではないですが、ログイン情報はセッションで管理されています。
ということで、コンポーネントを介さず直接セッションを呼び出せばOK。

$this->getRequest()->getSession()->read('Auth');

全く同じものが返ってくるのでこれで問題はなさそうです。

 

 

https://amzn.to/3mei5Zm
タイトルとURLをコピーしました