我有一份注册表,然后我想在注册成功后自动登录。我已经尝试过了,但注册成功后它并没有自动登录。
这是我的ActionRegister功能:
public function actionRegister(){
$model = new User;
if(isset($_POST['User'])){
$model->username = $_POST['User']['username'];
$model->password = $model->hashPassword($_POST['User']['password']);
$model->email = $_POST['User']['email'];
$identity=new LoginForm();
$identity->username=$model->username;
$identity->password=$model->password;
if($model->save()) {
$identity->login();
$this->redirect(array('index'));
}
}
$this->render('register',array('model'=>$model,'));
}
更新和编辑
这是模型LoginForm中的login()函数
public function login()
{
if($this->_identity===null)
{
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
{
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}
else
return false;
}
这是我的UserIdentity.php
class UserIdentity extends CUserIdentity
{
private $_id;
private $level;
public function authenticate()
{
$record=user::model()->findByAttributes(array('username'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->username=$record->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
public function getId(){
return $this->_id;
}
}
我的代码有问题吗?我将非常感谢您的帮助和解决方案。
最诚挚的问候。 Rafly。
答案 0 :(得分:0)
这个适用于我
if ($model->save()) { //If regisrtation success
$login = new LoginForm;
$login->username = $_POST['User']['userName'];
$login->password = $_POST['User']['password'];
if ($login->validate() && $login->login()) {
//Redirect home page
}
}
并确保注册中也没有问题..
答案 1 :(得分:0)
我已经解决了我自己的问题,只需更改authenticate函数的返回值即可
return !$this->errorCode;
答案 2 :(得分:-1)
// your code
$identity=new LoginForm();
$identity->username=$model->username;
$identity->password=$model->password;
// Try this
$identity=new LoginForm();
$identity->username=$model->username;
$identity->password=$_POST['User']['password'];
在$ model->密码中,您获得加密密码。不是完全密码。
我认为这会起作用