编辑信息CAKEPHP后刷新用户会话数组

时间:2013-02-13 15:16:13

标签: session cakephp cakephp-2.3

我想知道如何在用户更新信息后重新加载数组(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控制器。

但没有一个成功。

由于

2 个答案:

答案 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();