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

iwj*_*145 4 session cakephp cakephp-2.3

我想知道在用户更新信息后如何重新加载数组(Auth.User).

目前这种情况不会发生,直到用户退出然后再加载到加载阵列(Auth.User)时.

到目前为止,我已经尝试了一些解决方案,如.

我也尝试过添加 $user = $this->User->field('name', array('User.id' => $this->Session->read('Auth.User.id'))); $this->Session->write('Auth.User', $user); 到app控制器中.

但没有一个成功.

谢谢

jer*_*ris 6

你就在那里.请记住,返回的数组$user包含"用户"键,例如:

array(
  'User' => array(
    'id' => 1
  )
)
Run Code Online (Sandbox Code Playgroud)

因此将其保存到会话下Auth.User实际上会保存会话数组,如下所示:

array(
  'Auth' => array(
    'User' => array(
      'User' => array(
        'id' => 1
      )
    )
  )
)
Run Code Online (Sandbox Code Playgroud)

而是将其保存到Auth键中,您可以像往常一样继续访问它:

$user = $this->User->field('name', array(
  'User.id' => $this->Session->read('Auth.User.id')
)); 
$this->Session->write('Auth', $user);
Run Code Online (Sandbox Code Playgroud)

现在会话密钥已被清除,用户可以更轻松,更快速地重新登录,正如标记在评论中所说:use $this->Auth->login().

$user = $this->User->field('name', array(
  'User.id' => $this->Session->read('Auth.User.id')
)); 
$this->Auth->login($user);
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用$ this-> Auth-> login($ user); 因为这也将更新auth会话数据 (7认同)