当用户重定向到登录时,CakePHP将当前url作为查询字符串发送

时间:2011-07-01 09:30:28

标签: php cakephp

在CakePHP中,当用户尝试访问受Auth组件保护的操作时,会将其重定向到登录页面。

因此,例如,如果我尝试进行操作:domain.com/posts/add我需要domain.com/users/login

我想要做的是当发生类似这样的情况时,添加一个包含上一个网址的查询字符串,如下所示:domain.com/users/login?back=/posts/add这是因为我已禁用autoRedirect,因此重定向不再基于在会议上。

我如何添加此查询字符串?感谢

只是为了确认我知道如何使用登录方法中的查询字符串重定向用户,而不是当用户从需要授权的操作发送到登录页面时,如何首先发送查询字符串

1 个答案:

答案 0 :(得分:2)

我是通过访问登录操作中的$this->Auth->redirect(),并将该值解析为登录表单的隐藏参数,在表单提交时检查它是否存在,然后将用户发回给它。< / p>

即控制器:

function login() {
    if($this->Auth->user()) { // User got logged in
         if(!empty($this->data['User']['referer']) {
             $this->redirect($this->data['User']['referer']);
         } else {
              // Take them to dashboard or something instead
         }
    } else {
         // Set return_to to last page
     $referer = $this->Auth->redirect();
         if($referer == $this->here) {
         $referer = false;
         }
         $this->set(compact('referer') );
    }
}

在您的表单中,如$this->Form->input('referer', array('type' => 'hidden', 'value' => $referer ?: false); - 注意PHP 5.3三元。