Php Yii Cookie验证以保持用户登录

Php Yii Cookie验证以保持用户登录,php,cookies,yii,Php,Cookies,Yii,我正在尝试获取cookies以保持用户登录。以下是我所拥有的,但它不起作用: 在我的登录表单上,我有一个“记住我”复选框,我的登录功能中有: $duration=$this->rememberMe ? 3600*24*30 : 0 ; // true = 30 days, false=until browser close Yii::app()->user->login($this->_identity,$duration); 在config/main.php中,我有

我正在尝试获取cookies以保持用户登录。以下是我所拥有的,但它不起作用:

在我的登录表单上,我有一个“记住我”复选框,我的登录功能中有:

$duration=$this->rememberMe ? 3600*24*30  : 0 ; // true = 30 days, false=until browser close
Yii::app()->user->login($this->_identity,$duration);
在config/main.php中,我有:

'user'=>array(
                // enable cookie-based authentication
                'allowAutoLogin'=>true,
                'autoRenewCookie'=>true,
                'loginUrl'=>'/site/login',
                'class' => 'WebUser',
            ),
我有一个WebUser:

class WebUser extends CWebUser {


public function init()
{
    Yii::app()->getSession()->open();
    if($this->getIsGuest() && $this->allowAutoLogin && !Yii::app()->hasCommonSSL)
        $this->restoreFromCookie();
    elseif($this->autoRenewCookie && $this->allowAutoLogin)
        $this->renewCookie();

    $this->updateAuthStatus();
}
为了测试这一点,我正在登录,然后退出浏览器并重新打开。我可以确认在重新打开时调用了restoreFromCookie()。 我期望发生的是afterLogin($fromCookie)被调用,但事实并非如此

所以我做了一些挖掘。我发现restoreFromCookie()调用

$data=$app->getSecurityManager()->validateData($cookie->value))==错误

在if语句中。它从未通过验证。我不能,为了我的生命,找出原因

有人能帮我解释一下吗


谢谢

没有说这会导致问题,但您应该调用parent::init()。我看到你重写了它,但是CWebUser init调用了capapplicationComponent的init方法,这个init也在做一些事情。是的,谢谢你捕捉到了这一点,但是你说的对,这并没有解决问题。