用户重定向到登录时传递查询字符串

时间:2011-08-20 11:15:35

标签: cakephp

我在以下网址上有一个CakePHP网站:http://driz.co.uk/

当用户(我)尝试访问http://driz.co.uk/admin/portfolio/的投资组合管理员时,他们会自动转到管理员登录http://driz.co.uk/admin/login,因为管理方法都需要身份验证。

我想要做的是传递最后一页的查询字符串,所以当重定向发生时,它会在网址中说明:http://driz.co.uk/admin/login?continue=/admin/portfolio/

我该怎么做?

我试过了:

        $this->Auth->loginAction = array(
            'admin' => true,
            'prefix'=> 'admin',
            'controller' => 'users',
            'action' => 'login',
            '?' => array('continue' => $this->referer())
        );

但这只会导致重定向循环(不确定为什么它甚至会尝试重定向:/

注意:我知道CakePHP会在成功登录后自动重定向用户但我想添加查询字符串,因为我在应用程序中使用它来获取额外的爵士乐。

由于

2 个答案:

答案 0 :(得分:2)

自动蛋糕(如果我还记得)会让您返回登录后尝试访问的页面,除非您弄乱$this->Auth->redirectLogin

你可能在之前的过滤器中有这个运气:

$this->Auth->loginAction = array('controller'=>'users',
                                 'action'=>'login', 
                                 '?' => array('continue'=>'/' .
                                    strtolower($this->name) . '/' .
                                    $this->action), 'admin'=>false);

(由我添加的狡猾的换行符)。

这将产生:

site.com/admin/login?continue=%2Fcontroller%2Faction 这或多或少等同于你的需要。

您可能需要/不需要admin=>false

本质上,这会将当前控制器名称和操作附加到loginAction重定向。可能有点狡猾的黑客 我不知道如何防止蛋糕编码斜线

答案 1 :(得分:1)

在login()函数中,您可以在$this->Session->read('Auth.redirect');获取最后一页,因此无需将其添加到网址中。