CakePHP 2 - oturuma eklenmeyen manuel giriş

Ben CakePHP için yeni ve benim kayıt yuvarlak giriş/kayıt almaya çalışırken, cakephp 2.0 kullanıyorum

Bir kayıt denetleyicisi işlevini kullanan bir kullanıcı oluşturursam ve ayrı ayrı oturum açtığımda ( $ this-Auth-user() ) beklediğim tüm Model değerlerini içerir.

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)

Burada bir şey mi eksik?

Giriş Eylemi:

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');
    }
}
}

Eylem Kaydet (otomatik giriş ile):

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 Görüntüle

<?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');
?>

Herhangi bir yardım için alkışlar özür dilerim bu biraz uzun!


DÜZENLE:

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);

ve bu bir muamele yapar.

DÜZENLE: 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 cevap

Değişmeyi dene

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

için

if($this->Auth->login()){
1
katma

Ben PHP.ini alanımdaki adına "session.cookie_domain" değerini değiştirerek bu çözüldü.

session.cookie_domain = my.domain.com

Şimdi mükemmel çalışıyor.

Core.php oturum ayarları şu şekildedir:

Configure::write('Session', array(
    'defaults' => 'php'     
));
0
katma