我想知道如何在用户更新信息后重新加载数组(Auth.User)。
目前这种情况不会发生,直到用户退出然后重新加载,就像它加载数组一样(Auth.User)。
到目前为止,我尝试了一些解决方案such as。
我也尝试过添加
$user = $this->User->field('name', array('User.id' => $this->Session->read('Auth.User.id')));
$this->Session->write('Auth.User', $user);
进入app控制器。
但没有一个成功。
由于
答案 0 :(得分:6)
你就在那里。请记住,返回的数组$user
包含“用户”键,例如:
array(
'User' => array(
'id' => 1
)
)
因此将其保存到Auth.User
下的会话实际上会保存会话数组,如下所示:
array(
'Auth' => array(
'User' => array(
'User' => array(
'id' => 1
)
)
)
)
相反,将其保存到Auth键中,您可以像往常一样继续访问它:
$user = $this->User->field('name', array(
'User.id' => $this->Session->read('Auth.User.id')
));
$this->Session->write('Auth', $user);
现在会话密钥已清除,可以更轻松,更快速地重新登录用户,正如mark在评论中所述:使用$this->Auth->login()
。
$user = $this->User->field('name', array(
'User.id' => $this->Session->read('Auth.User.id')
));
$this->Auth->login($user);
答案 1 :(得分:0)
就我而言,我使用的是 CakePHP 4,
我已经加载了身份验证组件。
我正在使用此代码刷新我的身份验证信息。
$user = (new UserService())->Users;
$user = $user->find()->where(['Users.id' => $this->userId])->contain(['RELATION1', 'RELATION2'])->first();
$this->Authentication->setIdentity($user);
现在您可以使用...获取登录用户的数据
$this->Authentication->getIdentity()->getOriginalData();