केकेपीएचपी 2 - मैन्युअल लॉगिन सत्र में नहीं जोड़ रहा है

मैं केकपीएचपी के लिए नया हूं और मेरे हेड राउंड रजिस्टर/लॉगिन प्राप्त करने की कोशिश कर रहा हूं, मैं केकेएफपी 2.0 का उपयोग कर रहा हूं

यदि मैं एक रजिस्टर नियंत्रक फ़ंक्शन का उपयोग कर उपयोगकर्ता बनाता हूं और फिर सत्र ( $ this-auth-user() ) में अलग-अलग लॉगिन करता हूं, तो मुझे उम्मीद है कि सभी मॉडल मान हैं।

If i follow the cakephp 2.0 book example and manually login during the register then I do get logged in but $this->Auth->user() only contains the fields from the register form not the User Model. (ie. its missing my Model fields "created", "full name" etc but includes "password" and "passwordconfirm" both unencrypted)

क्या मुझसे कोई चूक हो रही है?

लॉगिन कार्यवाही:

public function login(){
if($this->request->is('post')){
    if($this->Auth->login()){
        return $this->redirect($this->Auth->redirect());
    } else {
        $this->Session->setFlash(__('Invalid Username or Password.'), 'default', array(), 'auth');
    }
}
}

पंजीकरण कार्य (ऑटो लॉगिन के साथ):

public function register(){
    if($this->request->is('post')){
        $this->User->create();
        if($this->User->save($this->request->data)){

            //Login automatically
            if($this->Auth->login($this->data['User'])){

                $this->Session->setFlash(__('Welcome to Test Site.'), 'default', array(), 'auth');
                return $this->redirect($this->Auth->redirect());

            } else {
                $this->Session->setFlash(__('Failed to login with new account.'), 'default', array(), 'auth');
                $this->redirect(array('action' => 'login'));
            }
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
        }
    }
}

Register.ctp देखें

<?php
echo $this->Form->create('User', array('action' => 'register'));
echo $this->Form->input('username');
echo $this->Form->input('password', array('label' => 'Password'));
echo $this->Form->input('passwordconfirm', array('label' => 'Confirm Password', 'type' => 'password'));
echo $this->Form->input('email', array('label' => 'Email (optional)'));
echo $this->Form->end('Join');
?>

किसी भी मदद के लिए चीयर्स लोग क्षमा चाहते हैं यह थोड़ा लंबा है!


संपादित करें:

Found a workaround! Looks like $this->Auth->login($this->data['User']) was failing to AuthComponent::identify() my User so i changed it for the following 3 lines:

$LoggedInID = $this->User->field('id', array('username' => $this->Auth->user('username')));
$user = $this->User->read(null, $LoggedInID);
$this->Auth->login($user);

और यह एक इलाज करता है।

संपादित करें: You can also just use the return value of save():

        if($user = $this->User->save($this->request->data)){

            //Login automatically
            if($this->Auth->login($user)){
3

2 उत्तर

बदलने का प्रयास करें

if($this->Auth->login($this->data['User'])){

सेवा मेरे

if($this->Auth->login()){
1
जोड़ा

मैंने PHP.ini में अपने डोमेन नाम पर "session.cookie_domain" के मान को बदलकर इसे हल किया।

session.cookie_domain = my.domain.com

अब यह पूरी तरह से काम करता है।

Core.php की सत्र सेटिंग्स निम्नानुसार है

Configure::write('Session', array(
    'defaults' => 'php'     
));
0
जोड़ा