登录后CakePHP重定向到以前的URL

时间:2014-12-25 07:16:21

标签: php cakephp

我正在使用CakePHP 2.2.0,当用户没有登录时,点击链接时,它会进入登录页面,登录后我想重定向到点击的初始链接。有谁知道我们如何使用CakePHP实现它?我尝试使用$this->referer(),但似乎没有获得以前访问过的网址。如果有人知道请帮我解决一下!

5 个答案:

答案 0 :(得分:14)

如果您需要重定向到referer页面,您可以使用:

$this->redirect($this->referer());

参考:http://book.cakephp.org/2.0/en/controllers.html#flow-control

答案 1 :(得分:5)

在处理登录的方法中,您可以重定向到

$this->Auth->redirectUrl()

答案 2 :(得分:2)

这应该有效:

if ( $this->Auth->login() ) {
    return $this->redirect( $this->Auth->redirect() );
}

来自doc

  

上面的代码(没有任何数据传递给login方法),将会   尝试使用POST数据记录用户,如果成功   将用户重定向到他们访问的最后一页,或者   AuthComponent :: $ loginRedirect。如果登录失败,则闪烁   消息已设置。

答案 3 :(得分:0)

实际上,您可以在登录链接中添加一些back_url,然后使用该值重定向用户。

这样的事情:

<?php
// log in link 
echo $this->Html->link('Log In', '/login?back_url='.$_SERVER['REQUEST_URI']); 

// log in action
$back_url = $this->request->query('back_url');
if($back_url === null) $back_url = '/';

// ... some other code

if($this->Auth->login()) {
   $this->redirect($back_url);
}
?>

答案 4 :(得分:0)

if ($this->Auth->login()) {

    $this->Session->write('SESSION_DATA_HERE', 1);
    return $this->redirect( $this->Auth->redirect() );      
} else {
    $this->Session->setFlash("Username or Password is incorrect.Please try again.", 'error');

    $this->redirect($this->referer());
}

验证Auth用户,如果是tru,则重定向到上次访问页面,否则返回到用户通过提供用户名和密码登录的登录屏幕