CakePHP登录重定向到请求的URL

时间:2010-10-18 23:11:07

标签: cakephp redirect url-routing

当用户点击需要登录的链接时,我们目前会将其重定向到登录页面,但我们会丢失预期的网址。登录后,该帐户的最佳帐户方法是什么,并将用户重定向到请求的页面?

我们正在使用Cake的最新稳定版本。感谢。

- 编辑 -

它的配置如下

$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
// $this->Auth->autoRedirect = false;
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'dashboard');

users_controller中的登录功能

function login() {
    Debugger::log("Redirect Session Key:" . $this->Session->read('Auth.redirect'), $level = 7);
    $ref = $this->referer();
    Debugger::log("referer():" . $ref, $level = 7);
}

当我导航到像localhost / mysite / unauthorized这样的未授权页面时,我被重定向到localhost / mysite / users / login。在我的debug.log文件中,重定向会话密钥打印为用户/仪表板,这意味着没有有效的引荐来源。为了验证这个假设我还在login函数中打印出referrer,它实际上返回“/”,这是我认为的请求者没有引用者信息的默认值。

1 个答案:

答案 0 :(得分:2)

  

“根据蛋糕文档,如果用户不是来自外部链接,则authcomponent仅在会话中保留此内容。”

再次阅读section

  

AuthComponent会记住您在要求通过Auth.redirect键下的会话中存储此值来验证自己之前尝试访问的控制器/操作对。但是,如果未设置此会话值(例如,如果您从外部链接到<登录页面),则用户将被重定向到loginRedirect中指定的URL。

它会记住您尝试访问的页面,除非您直接访问登录页面 ,因此您没有来自的上一页。如果您链接到/foo/secret_page并被重定向到登录页面,则会在会话中记住/foo/secret_page

如果你摆脱$this->Auth->autoRedirect = false并让AuthComponent做它的事情,它应该按照你想要的方式工作。

否则,您可以手动阅读并设置'Auth.redirect'会话密钥,以便更好地控制重定向。