Authで大ハマリ
ログイン機能を実装していたときにハマったところ。
現象
「トップページ→(ログイン成功!)→マイページ」
という流れを実装。
しかし、認証エラーが出まくりで、
var_dump($this->Auth->user());
の結果がNULLになっていた…
原因
AppControllerのbeforeFileter()で、_setFrontAuthConfig()という認証チェック系のfunctionを呼び出していたが、この中身を以下のようにすると認証エラー発生。
$this->Auth->loginAction = array('controller' => 'pages', 'action' => 'display', 'home',);
$this->Auth->loginRedirect = array('controller' => 'my_pages', 'action' => 'index',);
$this->Auth->logoutRedirect = array('controller' => 'pages', 'action' => 'display', 'home');
$this->Auth->autoRedirect = false;
$this->Auth->allow('login', 'logout');
以下のように変えたら、認証が通るようになった。
(ログインに失敗したら、ログイン専用ページにリダイレクトさせる、という動き)
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login',);
$this->Auth->loginRedirect = array('controller' => 'my_pages', 'action' => 'index',);
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login',);
$this->Auth->autoRedirect = false;
$this->Auth->allow('login', 'logout');
結論(?)
array('controller' => 'pages', 'action' => 'display', 'home',)
というのが(トップページのControllerをそのまま使うことが)良くないのかなぁ。