Я новичок в CakePHP и пытаюсь найти способ зарегистрироваться / войти в систему, я использую cakephp 2.0
Если я создаю пользователя с помощью функции контроллера регистра, а затем отдельно вхожу в сеанс ( $this-Auth-user () ) содержит все ожидаемые значения модели.
Если я последую примеру книги cakephp 2.0 и войду в систему во время регистрации, то я do войду в системуin но $ this-> Auth-> user () содержит только поля из формы регистра, но не пользовательскую модель.(т. е. в нем отсутствуют поля моей модели «создан», «полное имя» и т. д., но в нем есть «незашифрованные» и «пароль» и «пароль»)
Я что-то здесь упускаю?
Действие при входе:
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 View
<?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');
?>
Приветствую вас, парни, извинения, это немного долго!
РЕДАКТИРОВАТЬ:
Найден обходной путь!Похоже, $ this-> Auth-> login ($ this-> data ['User']) не удалось AuthComponent :: identifier () мой пользователь, поэтому я изменил его для следующих 3 строк:
$LoggedInID = $this->User->field('id', array('username' => $this->Auth->user('username')));
$user = $this->User->read(null, $LoggedInID);
$this->Auth->login($user);
и это работает угощение.
Редактировать: Вы также можете просто использовать возвращаемое значение save ():
if($user = $this->User->save($this->request->data)){
//Login automatically
if($this->Auth->login($user)){