Session 更新其他用户';在CakePHP中的会话

Session 更新其他用户';在CakePHP中的会话,session,authentication,cakephp,refresh,Session,Authentication,Cakephp,Refresh,下面是我的CakePHP场景 我有一个控制器MembersController,它处理所有的用户信息,还包括login()和logout()功能。工作人员可以通过edit功能编辑用户。但是,当工作人员编辑用户时,用户自己的会话不会更新 我正在寻找某种函数进入AppController,将用户会话与其对应的数据库条目进行比较。如果存在不匹配(即数据库已更新),我希望刷新用户的会话 我见过许多解决方案在用户编辑自己的详细信息时有效,但在工作人员编辑其他用户的详细信息时无效 非常感谢你的帮助 您可以这

下面是我的CakePHP场景

我有一个控制器
MembersController
,它处理所有的用户信息,还包括
login()
logout()
功能。工作人员可以通过
edit
功能编辑用户。但是,当工作人员编辑用户时,用户自己的会话不会更新

我正在寻找某种函数进入AppController,将用户会话与其对应的数据库条目进行比较。如果存在不匹配(即数据库已更新),我希望刷新用户的会话

我见过许多解决方案在用户编辑自己的详细信息时有效,但在工作人员编辑其他用户的详细信息时无效


非常感谢你的帮助

您可以这样做,但最终会在每个页面请求中访问数据库以获取用户信息。你最好的选择可能是这样做

function _updateUserSession() {
    if ($this->Auth->user()) {
        $user_id = $this->Auth->user($this->User->primaryKey);
        $user    = $this->User->read(null, $user_id);
        $this->Session->write($this->Auth->sessionKey, $user[$this->User->alias]);
    }
}

这将检查用户是否已登录,然后获取其ID(由
主密钥
引用),然后从数据库请求相应的
用户
记录。获取记录后,它会将该信息写入
会话
AuthComponent
期望的位置。

您可以这样做,但最终会在每个页面请求中访问数据库以获取用户信息。你最好的选择可能是这样做

function _updateUserSession() {
    if ($this->Auth->user()) {
        $user_id = $this->Auth->user($this->User->primaryKey);
        $user    = $this->User->read(null, $user_id);
        $this->Session->write($this->Auth->sessionKey, $user[$this->User->alias]);
    }
}

这将检查用户是否已登录,然后获取其ID(由
主密钥
引用),然后从数据库请求相应的
用户
记录。获取记录后,它会将该信息写入
会话
AuthComponent
期望的位置。

如果使用数据库,则可以删除用户的会话。 只需为所有当前会话创建一个后端。 我使用连接到会话的“在线活动”来跟踪用户id


假设已启用(实现)cookie身份验证,则可以轻松地强制浏览器以这种方式刷新用户会话。用户本身甚至没有注意到。

如果使用数据库,可以删除用户的会话。 只需为所有当前会话创建一个后端。 我使用连接到会话的“在线活动”来跟踪用户id

假设已启用(实现)cookie身份验证,则可以轻松地强制浏览器以这种方式刷新用户会话。用户自己甚至没有注意到