2012-02-22 3 views
0

にリダイレクトされません::のbeforeFilter() CakePHPの2.0認証は、私はAppControlerでいくつかのコードを持っているユーザー/ログイン

$this->Auth->authorize  = array('Actions' => array('actionPath' => 'controllers')); 
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 

しかし、私がしようとしているとき、認証は、ユーザー/ログインに私をリダイレクトしません。ブラウザで非公開のアクションを読み込む代わりに、私を '/'にリダイレクトします。私は間違っているの?

答えて

1

これは、ユーザーコントローラのログインアクションに対するアクセス許可を与えていないためです。ユーザーコントローラの先頭にこれを追加します。

function beforeFilter(){ 
    parent::beforeFilter(); 
    $this->Auth->allow('login'); 
} 

側の注意点として、ユーザー/ログイン/へLoginActionのはすでにデフォルト。これはlogoutRedirectでも同じです。既にデフォルトの場所に移動したいので、実際には必要ないので、両方を削除してみてください。

UPDATE

はあなたのAppControllerの一番上にあるコンポーネントが含まれていますか?

public $components = array('Auth'); 

確認するために、他の事は、あなたがまだログインしていないということである。すでにログインしているが、ユーザーでログインし、それは同様にリダイレクトすることができるため、コントローラ内の特定のアクションに権限を付与されていない場合。

+0

私は既に$ this-> Auth-> allow( 'login')でbeforeFilterをUsersControllerに持っています。私が 'users/login'に行くと、ログインページが表示されます。 – Igor

+0

上記の私の更新を参照してください。 –

関連する問題