我检查过这个Cakephp cookie总是自动删除,但没有。这并不是我一直在寻找的。
自动登录使用的cookie正在被删除。
以下是所做的:
public function login( ) {
if ($this->Auth->user('id')) {
$this->redirect(array('action' => 'dashboard'));
}
if ($this->request->is('post')) {
if($this->request->data['User']['auto_login']):
$this->AutoLogin->write($this->request->data['User']['email'],
$this->request->data['User']['password']);
endif;
if ($this->Auth->login( )) {
//$this->redirect(array('controller' => 'users', 'action' => 'edit'));
return $this->redirect($this->Auth->redirect( ));
}
else
{
$this->Session->setFlash(__('Username and Password is incorrect'), 'default', array( ), 'auth');
}
}
else {
if($this->AutoLogin->read()):
$AllData = $this->AutoLogin->read();
$AllData['username'] = 'email';
$AllData['password'] = 'password';
$check = $this->User->find('first', array('username' => 'email', 'password' => 'password'));
if($check):
$this->Auth->user($check);
$this->Auth->redirect();
endif;
$this->redirect(array('action' => 'login'));
endif;
}
它设置饼干,它做所有该死的事情!
但是,在浏览器退出时,它就消失了!是的,尝试了各种浏览器,还检查了浏览器设置是否有效。
我的AppController正在加载:
public $components = array('AutoLogin','Auth' => array('autoRedirect' => false), 'Cookie', 'RequestHandler', 'Session', 'Facebook.Connect' => array('model' => 'User') );//, //'DebugKit.Toolbar');
现在,这里有一个陷阱,当我在Inspect Element下检查Resources时,它向我显示了两件事:PHPSESSID和CakeCookie[autoLogin],PHPSESSID-type是session,expires-blank。CakeCookie类型为cookie,一个月后过期!
由于它"看起来"像原生PHP,我想检查session_start()函数,我发现了它!这是Facebook组件,但禁用它确实阻止了PHPSSID的出现,但cookie仍然会在浏览器退出时被删除。
请提供建议。
提前谢谢。
在Facebook插件文件中打开Facebook.php文件。
在第4行或第5行的__construct下,注释掉上面写着session_start()的行;
理想情况下,CakePHP加载所有插件,从而设置PHPSSID。对此发表评论,甚至Facebook也会有效运作。
此外,请确保在tmp文件夹下创建一个名为"sessions"的文件夹,并将其标记为chmod-R 0777sessions/,刷新应用程序。