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をそのまま使うことが)良くないのかなぁ。