在CakePHP中使用Auth和admin前缀时出现奇怪的重定向问题

时间:2013-02-15 22:40:14

标签: cakephp authentication redirect

我在Cakephp应用程序中使用admin前缀,用于某些管理员视图。我还使用Auth根据User表中的role字段限制对这些视图的访问。很标准。

问题是,当未经授权的用户试图转到admin/users时(在这种情况下禁止索引操作),它们会被重定向到/admin/users/login,当然,这不是不存在。

对于没有admin前缀的操作,不会发生这种情况。那些表现得很好。

为什么用户被发送到管理员前缀和禁止操作前面的登录名?

2 个答案:

答案 0 :(得分:7)

任何仍然遇到此问题的人,根据您可以在loginAction(Documentation)中使用数组或字符串的文档。

使用数组并设置'admin'=> false仍然给我带来麻烦,所以我尝试使用字符串代替:

public $components = array(
    'Auth' => array(
        'loginRedirect'  => array('controller' => 'dashboards', 'action' => 'home'),
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
        'loginAction'    => '/users/login',
        'authorize'      => array('Actions')
    ),
);

这最终解决了我的问题。希望它也适合你。

答案 1 :(得分:1)

您需要覆盖路由数组中的特定前缀。

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   'admin' => false
);

或者,如果您使用多个前缀,则可以动态删除前缀名称,如下所示:

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   $this->request->prefix => false
);