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');
全く同じものが返ってくるのでこれで問題はなさそうです。
Amazon.co.jp