我尝试应用本文中的解决方案: 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;
}
有任何帮助吗? 谢谢!
答案 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')