我試圖讓我的登錄()函數與'記住我'的工作。CakePHP登錄()與'記住我'導致無限循環
function login() {
if ($this->Auth->user()) {
if (!empty($this->data) && $this->data['User']['remember_me']) {
$cookie = array();
$cookie['username'] = $this->data['User']['username'];
$cookie['password'] = $this->data['User']['password'];
$this->Cookie->write('Auth.User', $cookie, true, COOKIE_EXPIRE);
unset($this->data['User']['remember_me']);
}
$this->LogDetail->Write('activity','has logged IN');
$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->destroy('Message.Auth'); # clear auth message, just in case we use it.
$this->LogDetail->Write('activity','has been authenticated via cookie and is now logged IN');
$this->redirect($this->Auth->redirect());
} else {
$this->LogDetail->Write('activity','attempted to gain access with an invalid cookie');
$this->Cookie->destroy('Auth.User'); # delete invalid cookie
$this->Session->setFlash('Invalid cookie');
$this->redirect('login');
}
}
}
}
它首先檢查是否在會話中授權用戶。
如果用戶在會話中被授權,它會將它們重定向到目標頁面。
如果因爲用戶提交了登錄表單而被授權進行會話,它會檢查是否選中了「記住我」,然後在重定向之前創建cookie。
如果用戶未在會話授權,對於存在的Auth.User的cookie,然後將函數檢查試圖Auth->登錄($ cookie中)。
這是問題發生的地方。
如果沒有會話但擁有Auth.User cookie的用戶訪問該站點,它會永久重定向,一次又一次地向日志寫入「已通過cookie進行身份驗證並且現在已登錄」,直到瀏覽器終止。
我很困惑,因爲$ this-> Auth-> login($ cookie)返回true,但SESSION沒有被更新!
Auth-> login($ cookie)如何返回true,但會話的auth信息保持未設置(導致無限循環)?
在觀看cookie的螢火蟲在無限循環中,我注意到,在此過程中
我還要提到的是,登錄系統/認證/重定向等正常工作時,沒有CakePHP的會話cookie是不斷變化的值Auth.User Cookie是目前
如果有人可以幫助我弄清楚了這一點,我將不勝感激
謝謝
會話 - >銷燬是問題!非常感謝 – samJL 2011-05-26 16:18:38