我在以下网址上有一个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会在成功登录后自动重定向用户但我想添加查询字符串,因为我在应用程序中使用它来获取额外的爵士乐。
由于
答案 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');
获取最后一页,因此无需将其添加到网址中。