1

我检查了这个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;
    }

它会设置 cookie,它会做所有该死的事情!

但是,在浏览器退出时,它就消失了!是的,尝试了各种浏览器,并检查了浏览器设置是否正在执行此操作。

我的 AppController 正在加载:

public $components = array('AutoLogin','Auth' => array('autoRedirect' => false), 'Cookie', 'RequestHandler', 'Session', 'Facebook.Connect' => array('model' => 'User') );//, //'DebugKit.Toolbar');

现在,这是一个问题,当我检查 Inspect Element 下的 Resources 时,它向我显示了 2 件事: PHPSESSID 和 CakeCookie[autoLogin] , PHPSESSID - 类型是会话并且过期 - 空白。CakeCookie 类型是 cookie,一个月后过期!

因为它“看起来”像原生 PHP,所以我想检查 session_start() 函数并找到了它!它是 Facebook 组件,但禁用它确实阻止了 PHPSESSID 的出现,但是,cookie 仍然会在浏览器退出时被删除。

请指教。

提前致谢。

4

1 回答 1

2

在 Facebook 插件文件中打开 Facebook.php 文件。

在第 4 行或第 5 行的 __construct 下,注释掉 session_start();

理想情况下,CakePHP 会加载所有导致 PHPSESSID 设置的插件。将其注释掉,甚至 Facebook 也会有效地工作。

另外,请确保您在 tmp 文件夹下创建一个名为“会话”的文件夹并将其标记为 chmod -R 0777 sessions/ ,刷新您的应用程序。

于 2012-09-11T07:05:04.987 回答