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

Kie*_*ran 1 authentication session cakephp refresh

这是我的CakePHP场景.

我有控制器MembersController处理所有用户的信息,也cotnains的login()logout()功能.工作人员可以通过该edit功能编辑用户.但是,当工作人员编辑用户时,用户自己的会话不会更新.

我正在寻找一些进入AppController的函数,用于将用户会话与其相应的数据库条目进行比较.如果存在不匹配(即数据库已更新),我想刷新用户的会话.

我已经看到许多解决方案在用户编辑自己的详细信息时有效,但在工作人员编辑其他用户详细信息时却没有.

非常感谢你的帮助!

joe*_*oeb 6

那么你可以做到这一点,但你最终会在数据库中找到每个页面请求的用户信息.你最好的选择可能就是这样做.

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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将检查用户是否已登录,然后获取其ID(由其引用primaryKey),然后User从数据库中请求相应的记录.获得记录后,它会将该信息写入预期Session的位置AuthComponent.