5.2.6.9 autoRedirect
The original text for this section has changed since it was translated. Please help resolve this difference. You can:
通常、 AuthComponent は認証を実行してすぐ、自動的にリダイレクトを実行します。しかしユーザをリダイレクトする前に、さらに何かをチェックしたいかもしれません。
<?php
function beforeFilter() {
...
$this->Auth->autoRedirect = false;
}
...
function login() {
//-- この関数に含まれるコードは、 autoRedirect が false にセットされている時、つまり beforeFilter でだけ動作します。
if ($this->Auth->user()) {
if (!empty($this->data)) {
$cookie = array();
$cookie['username'] = $this->data['User']['username'];
$cookie['password'] = $this->data['User']['password'];
$this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');
unset($this->data['User']['remember_me']);
}
$this->redirect($this->Auth->redirect());
}
if (empty($this->data)) {
$cookie = $this->Cookie->read('Auth.User');
if (!is_null($cookie)) {
if ($this->Auth->login($cookie)) {
// この分岐では認証のメッセージをクリアしてください。
$this->Session->del('Message.auth');
$this->redirect($this->Auth->redirect());
}
}
}
}
?>
<?phpfunction beforeFilter() {...$this->Auth->autoRedirect = false;}...function login() {//-- この関数に含まれるコードは、 autoRedirect が false にセットされている時、つまり beforeFilter でだけ動作します。if ($this->Auth->user()) {if (!empty($this->data)) {$cookie = array();$cookie['username'] = $this->data['User']['username'];$cookie['password'] = $this->data['User']['password'];$this->Cookie->write('Auth.User', $cookie, true, '+2 weeks');unset($this->data['User']['remember_me']);}$this->redirect($this->Auth->redirect());}if (empty($this->data)) {$cookie = $this->Cookie->read('Auth.User');if (!is_null($cookie)) {if ($this->Auth->login($cookie)) {// この分岐では認証のメッセージをクリアしてください。$this->Session->del('Message.auth');$this->redirect($this->Auth->redirect());}}}}?>
このコードの login 関数は、beforeFilter で $autoRedirect を false にセットしない限り実行されません。この login 関数のコードは、認証が試みられた後だけに実行されます。ここはログインが成功したかどうか確定する最もよい場所です。(例えば、最終ログイン日時をログに記録するなど)


























