如何在CakePHP(2.10)表会话中存储user_id?

时间:2018-03-24 14:39:04

标签: cakephp cakephp-2.0

我尝试应用本文中的解决方案: https://thomasv.nl/2015/09/cakephp-2-8-x-storing-sessions-in-the-database-revisited/

但是使用CakePHP 2.10,似乎回调方法在我的自定义会话模型上根本不起作用。我无法存储" user_id"在会话表中。

即使在删除或任何其他回调不起作用。例如,如果我插入"返回false"在beforeSave结束时,它仍然保存在数据库中!

以下是自定义会话模型中的代码:

public function beforeSave($options = array()) {
        $this->data[$this->alias]['user_id'] = AuthComponent::user('id');
        return true;
}

有任何帮助吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

以这种方式尝试:

 public function beforeSave($options = array()) {
     $this->data[$this->alias]['user_id'] = CakeSession::read("Auth.User.id");
     return true;
 }

请注意,这仅适用于CakePHP 2.x - 应该避免使用。通常,您将所需的会话数据传递到模型层。在3.x中,您无法再静态访问会话,因此您肯定需要将数据传递到模型层。

确保你已经调用了控制器parentFilter();

public function beforeFilter(){
    parent::beforeFilter();
}

确保您已将其添加到模型文件的顶部:

App::uses('CakeSession', 'Model/Datasource')