我们在/rpotected/components/UserIdentity.php中有以下功能:
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 :(得分:1)
请检查php.ini中的“session.cookie_lifetime”值
session.cookie_lifetime = 2592000
答案 1 :(得分:-2)
您可以通过这种方式将登录凭据存储在CWebUser类的变量中 $ this-&gt; setState(loogedInUser,$ user); 使用setState函数。
此信息存储在Cookie中,而不是会话中,您可以使用它来访问它 在任何地方 Yii :: app() - &gt; user-&gt; loogedInUser 。