更新后刷新 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);
在 Appcontroller 中
public function initialize()
{
...
$tableUser=TableRegistry::get("Users");
$user=$tableUser->get($this->Auth->user('id'));
$this->set(compact('user','...'));
...
在视图中,只需使用 $user['name'] 即可获得名称。 user 中的任何更新都会影响 $user。使用数组 $user 更新用户后,您可以获得任何字段。
我坚持你的情况,但我很久以前就找到了解决方案。希望这项工作。如果它不起作用,请告诉我。我写在我的记忆中,所以它可能会出错
我在 header 和 $this->Auth->user('name')
中显示登录用户的名称。
问题是,当我更新用户名时,如何在 $this->Auth->user()
刷新这个值,因为在我刚刚更新旧名称后仍然如此?
除非您使用无状态身份验证,否则数据是从会话中存储和检索的,因此您只需要在那里更新它。
例如
$this->Auth->session->write($this->Auth->sessionKey . '.name', $newName);
或者在适用的情况下设置完整的修改后的用户数据(注意这将更新会话)
$this->Auth->setUser($updatedUserData);
在 Appcontroller 中
public function initialize()
{
...
$tableUser=TableRegistry::get("Users");
$user=$tableUser->get($this->Auth->user('id'));
$this->set(compact('user','...'));
...
在视图中,只需使用 $user['name'] 即可获得名称。 user 中的任何更新都会影响 $user。使用数组 $user 更新用户后,您可以获得任何字段。 我坚持你的情况,但我很久以前就找到了解决方案。希望这项工作。如果它不起作用,请告诉我。我写在我的记忆中,所以它可能会出错