evert0ns答えが正しい。しかし、AuthComponent :: login()を使うべきです。なぜなら、データはAuthComponent内に保存され、毎回セッションからフェッチされないからです。
私は数日前に問題が発生しました。
// AppController.php
/**
* Renews current user data, e.g. in case of an email address change while being logged in.
*
* @param array $newUserData
* @return void
*/
protected function renewUserSession($newUserData){
if(!isset($newUserData) || empty($newUserData)){
return;
}
// We need to fetch the current user data so custom indexes are copied
$currentUserData = $this->Auth->user();
if(!isset($currentUserData) || empty($currentUserData)){
return;
}
// Merge old with new data
$newUserData = array_merge($currentUserData, $newUserData);
// Login with new data
$this->Auth->login($newUserData);
}
出典:my paste
あなたのAppControllerでこれを入れてください。このメソッドは、現在のユーザーデータと新しいユーザーデータをマージして、既存のカスタムインデックスを保持することに特化しています。私はこれが必要でしたが、あなたはそれを残すことができます。 更新されたユーザーデータをメソッドのパラメーターとして指定します。モデル検索フォームにはありません。 例:
$data = array(
'User' => array(
'username' => 'bla',
'passwort' => 'fu',
'email' => '[email protected]'
)
);
// Wrong
$this->renewUserSession($data);
// Right
$this->renewUserSession($data['User']);
あなたは認証コンポーネントを回避しようとしないでください。そこにあるセッションキーが変更された場合、あなたはすぐに解決します。 – func0der
'$ this-> Auth-> login($ newUserData);' func0derの答えを参照してください。 –
そのような何かもう一度、もう一度ユーザーを認証する必要があります。既にユーザーがログインしています。これは推奨された方法です。@deceze [〜deceze] – AnNaMaLaI