我目前正在从事一个项目,我在其他人开始这个构建之后接管了这个项目。当我第一次开始该项目时,该项目是两个不同的子域 x.domain.com 和 y.domain.com,现在我们将其移动为一个域,但是两个站点 domain.com/x 和 domain.com/y。早些时候登录功能仅在 x 子域上可用,但现在我希望用户也能够在两个站点上登录。
每个站点都有主控制器(xController 和 yController),它们都扩展了 xyController。
如果我在 x 网站上登录一切正常,但只要我去 domian.com/y
yii:app()->user->isGuest returns true
如果我回到 domain.com/x 我登录了。
我无法弄清楚为什么会发生这种情况,两个站点的 PHPSESSID cookie 相同。
这是我扩展 CUserIdentity 的类:
class UserIdentity extends CUserIdentity{
private $_id;
public function authenticate(){
$user=User::model()->findByAttributes(array('user_name'=>$this->username));
if($user === null){
$this->errorCode=self::ERROR_USERNAME_INVALID;
}else{
if($this->comparePassword($user, $this->password)){
/** Do some other checks here **/
$this->_id=$user->id;
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
}
$this->errorCode=self::ERROR_USERNAME_INVALID;
}
return !$this->errorCode;
}
public function getId(){
return $this->_id;
}
}
这是配置文件中的一部分
'components'=>array(
'user'=>array(
'class'=>'WebUser',
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
...
[编辑] 我发现问题出在哪里,我必须在两个配置中将配置数组中的 id 选项设置为相同的值,之前没有在其中任何一个中设置 id