evert0ns उत्तर सही है। लेकिन आपको AuthComponent :: लॉगिन() का उपयोग करना चाहिए, क्योंकि डेटा 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-> लॉगिन ($ newUserData);' func0der का उत्तर देखें। –
इसकी कुछ चीज फिर से उपयोगकर्ता को प्रमाणीकृत करने की आवश्यकता है, पहले से ही उपयोगकर्ता लॉग इन है, तो क्या यह अनुशंसित तरीका है कृपया मुझे बताएं @deceze [~ deceze] – AnNaMaLaI