我的登录方法中有以下代码,可以将用户重定向到他们的上一页,并向他们显示一条消息,表示欢迎回来。我已禁用自动重定向以授予我控制权,以便我可以在登录时显示闪烁消息并执行其他操作。
if(!(empty($this->data)) && $this->Auth->user())
{
$this->Session->setFlash('Welcome back! <strong>' . $this->User->field('firstname') . '</strong>', 'flash');
$this->redirect($this->Auth->redirect($this->referer()));
}
当使用标题中的登录表单时,这工作正常,但是当从实际的独立登录页面登录时,它会将用户重定向回登录页面,并显示错误,指出他们的用户名和密码不正确以及欢迎返回消息。用户已登录并可以访问相关页面,但我不希望他们重定向回登录页面。我该如何解决这个问题?
您可以检查引荐来源网址是否为登录页面,如果是,请将其重定向到主页。
编辑以添加代码示例:
if($this->referer()=='/users/login'){
$this->redirect('/');
}else{
$this->redirect($this->Auth->redirect($this->referer()));
}
if(!(empty($this->data)) && $this->Auth->user())
{
$this->Session->setFlash('Welcome back! <strong>' . $this->User->field('firstname') . '</strong>', 'flash');
//$this->redirect($this->Auth->redirect($this->referer()));
if($this->referer(array('controller' => 'users', 'action' => 'login')))
{
$this->redirect(array('controller' => 'home', 'action' => 'index'));
}
else
{
$this->redirect($this->Auth->redirect($this->referer()));
}
}