更新后刷新 Auth 用户数据

Refresh Auth user data after update

我在 header 和 $this->Auth->user('name') 中显示登录用户的名称。

问题是,当我更新用户名时,如何在 $this->Auth->user() 刷新这个值,因为在我刚刚更新旧名称后仍然如此?

除非您使用无状态身份验证,否则数据是从会话中存储和检索的,因此您只需要在那里更新它。

例如

$this->Auth->session->write($this->Auth->sessionKey . '.name', $newName);

或者在适用的情况下设置完整的修改后的用户数据(注意这将更新会话)

$this->Auth->setUser($updatedUserData);

另见 API > Controller > Component > AuthComponent::_setUser()

在 Appcontroller 中

 public function initialize()
{
    ...
    $tableUser=TableRegistry::get("Users");
    $user=$tableUser->get($this->Auth->user('id'));

    $this->set(compact('user','...'));

...

在视图中,只需使用 $user['name'] 即可获得名称。 user 中的任何更新都会影响 $user。使用数组 $user 更新用户后,您可以获得任何字段。 我坚持你的情况,但我很久以前就找到了解决方案。希望这项工作。如果它不起作用,请告诉我。我写在我的记忆中,所以它可能会出错