我是新来的CakePHP,并试图让我的头一轮注册/登录,即时通讯使用CakePHP 2.0CakePHP的2 - 手动登录不添加到会话
如果我使用寄存器控制器功能创建一个用户,然后登录seperately会话($ this-Auth-user())包含我期望的所有模型值。
如果我按照CakePHP的2.0书示例和寄存器中手动登录然后我做获得登录而$这个 - > Auth->用户()只包含从登记表不是用户领域模型。 (即其缺少我的模型字段“创建”,“全名”等,但包括“密码”和“密码确认”都未加密)
我在这里错过了什么吗?
登录操作:
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');
?>
干杯任何帮助球员道歉这是一个有点长!
编辑:
找到一个解决办法! 貌似$这 - > Auth->登录($这 - >数据[ '用户'])是未能AuthComponent ::识别()我的用户,所以我改变了它为以下3行:
$LoggedInID = $this->User->field('id', array('username' => $this->Auth->user('username')));
$user = $this->User->read(null, $LoggedInID);
$this->Auth->login($user);
和这个作品是一种享受。
编辑:你也可以使用保存()的返回值:
if($user = $this->User->save($this->request->data)){
//Login automatically
if($this->Auth->login($user)){