CakePHP登录重定向
我的登录方法中有以下代码:CakePHP登录重定向,php,cakephp,Php,Cakephp,我的登录方法中有以下代码: if(!(empty($this->data)) && $this->Auth->user()) { if($this->referer(array('controller' => 'users', 'action' => 'login'))) { $this->redirect(array('controller' => 'hom
if(!(empty($this->data)) && $this->Auth->user())
{
if($this->referer(array('controller' => 'users', 'action' => 'login')))
{
$this->redirect(array('controller' => 'home', 'action' => 'index'));
}
else
{
$this->redirect($this->Auth->redirect($this->referer()));
}
}
}
当用户使用站点标题中的登录表单成功登录时,这基本上会将用户重定向到上一页,但如果用户直接从登录页面登录,则会将其发送到主页,因为上一页就是登录表单
然而,问题是,如果用户访问需要验证的页面,那么他们将被重定向到登录页面,然后再登录,但是由于他们现在访问了登录页面,因此他们将被重定向到主页,而不是他们试图访问的上一页
如何解决此问题
谢谢有两三种选择,我认为其中一种更好 选项1-嵌入形式(首选)
home
,并检查重定向路径是否由Auth组件设置
在您的登录操作中类似于此
$auth_redirect = $this->Session->read("Auth.redirect");
if(isset($auth_redirect) && $auth_redirect != "") {
$this->redirect($auth_redirect);
} else {
$this->redirect('/home/index')
}
在你的app\u控制器中有类似的东西
$this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
您意识到$this->Auth->redirect()
会自动为您执行此操作,对吗?如果($this->referer(数组('controller'=>'users','action'=>'login'))
这意味着什么Controller::referer()
method return value(URL)的计算结果始终为true
。CakePHP已经检查了会话中是否存在数据,如果没有,则将其发送到默认重定向,那么上面的代码会做什么?如果关闭自动重定向(OP正在执行的操作),则此代码将启动。是的,但是如果您提供了$this->redirect($this->Auth->redirect()),当autoRedirect设置为false时,框架会自动将用户重定向到上一个调用的操作(如果需要身份验证)事件代码>@Cameron嗯,你说得对。我想我最初可能只是想让OP将$this->referer()
调用替换为Auth.redirect
。你应该把它贴出来作为答案。