Php Yii Cookie验证以保持用户登录
我正在尝试获取cookies以保持用户登录。以下是我所拥有的,但它不起作用: 在我的登录表单上,我有一个“记住我”复选框,我的登录功能中有: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中,我有
$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也在做一些事情。是的,谢谢你捕捉到了这一点,但是你说的对,这并没有解决问题。