2012-07-31 129 views
0

后我们在/rpotected/components/UserIdentity.php以下功能:Yii框架会议不保存登录

public function authenticate() 
    { 
      $username = $this->username; 
      $password = $this->password; 

      $user = Users::model()->find('username=? AND password=?', array($username, $password)); 
      if($user === NULL){ 
        $this->errorCode=self::ERROR_UNKNOWN_IDENTITY; 

      }else{ 
        $this->username = $user->username; 
        sess('SESS_USER_INFO', $user->attributes); 
        //print_r(sess('SESS_USER_INFO')); 
        $this->errorCode=self::ERROR_NONE; 
      } 

      return !$this->errorCode; 
    } 

下面是从/protected/models/Users.php一个片段:

public function login() 
{    
     if($this->_identity===null) 
     { 
       $username = $this->username; 
       $password = md5($this->password); 
       //echo "Username: ".$username."<br />Password:".$password; 
       $this->_identity=new UserIdentity($username, $password); 
       $this->_identity->authenticate(); 

     } 
     if($this->_identity->errorCode===UserIdentity::ERROR_NONE) 
     { 
       $duration=$this->rememberMe ? 3600*24*30 : 60*20; // 30 days 
       //print_r($this->_identity); 
       Yii::app()->user->login($this->_identity,$duration); 

       //echo "Login Successful"; 
       return true; 
     } 
     else{ 
       //echo "Error"; 
       $this->addError('password','Incorrect username or password.'); 
       return false; 
     } 

问题:登录后,单击我的配置文件链接提示再次登录。因此,会话似乎并不存储/保存登录凭证并在登录使用期限内持有登录凭证。

应如何修改验证功能以便存储会话信息并使登录凭证继续运行?

+0

什么是'SESS( 'SESS_USER_INFO',$用户>属性) “session.cookie_lifetime” 值;'? – 2012-08-01 00:12:30

+0

我在想它的目的是保存会话的登录用户属性? – SidC 2012-08-01 01:53:48

+1

删除它,它可能与yii的会话处理冲突 – 2012-08-01 02:12:27

回答

1

请在php.ini

session.cookie_lifetime = 2592000 
-2

您可以通过这种方式将登录凭证存储在CWebUser类的变量中$ this-> setState(loogedInUser,$ user);使用setState函数。

此信息存储在cookie中,而不是为会话,并且可以使用 的Yii ::应用程序()来访问它 - >用户> loogedInUser在任何地方。