Implementei a verificação de login com cookie(remember me) porém algo não está correto.
O cookie é criado corretamente, porém quando fecho o navegador e depois o inicio e vou acessar uma página que precisa de login, o sistema está redirecionando para o login novamente, mas não deveria, pois existe o cookie.
Já defini corretamente as configurações de autologin como vi na documentação:
'user' => array(
'allowAutoLogin' => true,
'class' => 'AdminWebUser',
'loginUrl' => Yii::app()->createUrl('/admin/index/login'),
'returnUrl' => array('admin/index/index'),
'authTimeout' => 86400,
), ...
Já pesquisei o máximo que pude, mas não encontrei uma solução do porque a verificação de cookie não funciona.
Eu verifico se um usuário está logado assim:
// ... em AdminWebUser que é um CWebUser
public function requestLoginIfNecessaryToThisRoute($route)
{
if($this->isLogged() or Route::isPublic($route)) {
return true; // continua o direcionamento para $route
} else {
$this->setReturnUrl('admin/' . $route);
return $this->requestLogin(); // redireciona para a URL de login
}
}
public function isLogged()
{
return $this->isGuest() === false;
}
public function isGuest()
{
return Yii::app()->user->isGuest;
}
Em toda action (beforeControllerAction), chamo:
// $route é a URL requisita(url de retorno), ex: admin/manager/create
Yii::app()
->getModule('admin')
->user->requestLoginIfNecessaryToThisRoute($route);
Essa verificação está redirecionando para a página de login mesmo quando o cookie de login existe. Minhas dúvidas:
-
Yii::app()->user->isGuest verifica se o usuário está logado, mas porque então diz que não está quando existe o cookie do remember me?
-
O login de sessão funciona perfeitamente. Mas como logar quando tem o cookie do remember me?