【问题标题】:How to store user_id in CakePHP (2.10) table session?如何在 CakePHP (2.10) 表会话中存储 user_id?
【发布时间】:2018-03-24 14:39:03
【问题描述】:

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

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

即使 afterDelete 或任何其他回调也不起作用。例如,如果我在 beforeSave 的末尾插入一个“return false”,它仍然会保存在数据库中!

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

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

有什么帮助吗? 谢谢!

【问题讨论】:

  • 会话配置和/或模型类/文件名很可能有错误。但是,如果没有看到所有相关代码,就不可能给你一个具体的答案。

标签: cakephp cakephp-2.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 中,您不能再静态访问会话,因此您肯定需要将数据传递到模型层。

确保你已经调用了控制器的父级 beforeFilter();

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2012-05-28
    相关资源
    最近更新 更多