0

authセッションに保存されているユーザー情報を更新するにはどうすればよいですか?ログアウトせずに再度ログインします。

この関数でうまくいくと思いますが、ベストプラクティスですか?

function update($field, $value){
    $this->Session->write($this->Auth->sessionKey . '.' . $field, $value);
}
4

2 に答える 2

1

はい。

現在の情報配列を取得して変更し、を呼び出すこともできますが$this->Auth->login($newUserData);、これによりセッションも更新されます(ただし、ユーザーの操作は必要ありません)。注:CakePHP2.0以降にのみ適用されます。

于 2012-08-18T23:10:49.610 に答える
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ます)

于 2012-08-18T23:49:51.750 に答える