如何更新存储在auth会话中的用户信息?无需注销并再次登录。
我认为这个功能会做到这一点..但它是最佳实践吗?
function update($field, $value){
    $this->Session->write($this->Auth->sessionKey . '.' . $field, $value);
}
如何更新存储在auth会话中的用户信息?无需注销并再次登录。
我认为这个功能会做到这一点..但它是最佳实践吗?
function update($field, $value){
    $this->Session->write($this->Auth->sessionKey . '.' . $field, $value);
}
是的。
您可以获取当前的信息数组,对其进行修改,然后调用$this->Auth->login($newUserData);,但这也会更新会话(尽管不需要用户交互)。注意:仅适用于 CakePHP 2.0+。
我已经完成update了获取新值数组的功能。带键(字段名称):
public function update($fields, $values = null) {
    if (empty(parent::$_user) && !CakeSession::check(parent::$sessionKey)) {
        return false;
    }
    if (!empty(parent::$_user)) {
        $user = parent::$_user;
    } else {
        $user = CakeSession::read(parent::$sessionKey);
    }
    if (is_array($fields)) {
        if (is_array($values)) {
            $data = array_combine($fields, $values);
        } else {
            $data = $fields;
        }
    } else {
        $data = array($fields => $values);
    }
    foreach ($data as $field => $value) {
        if (isset($user[$field])) {
            $user[$field] = $value;
        }
    }
    return $this->login($user);
}
(感谢tigrang的login功能)