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

在CakePHP中使用Auth和admin前缀时出现奇怪的重定向问题,cakephp,authentication,redirect,Cakephp,Authentication,Redirect,我在Cakephp应用程序中使用admin前缀来查看一些管理员视图。我还使用Auth根据用户表中的role字段限制对这些视图的访问。相当标准 问题是,当未经授权的用户试图转到(例如,admin/users)时(在这种情况下,索引操作是禁止的),他们会被重定向到/admin/users/login,当然,这是不存在的 对于没有admin前缀的操作,不会发生这种情况。那些表现很好 为什么要将用户发送到以管理员前缀和禁止操作为前缀的登录?根据文档,任何对此仍有问题的人都可以在loginAction()

我在Cakephp应用程序中使用
admin
前缀来查看一些管理员视图。我还使用Auth根据用户表中的
role
字段限制对这些视图的访问。相当标准

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

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


为什么要将用户发送到以管理员前缀和禁止操作为前缀的登录?

根据文档,任何对此仍有问题的人都可以在loginAction()中使用数组或字符串

使用数组并将“admin”=>false设置为false仍然会给我带来麻烦,因此我尝试使用字符串:

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

这最终解决了我的问题。希望它也适用于您。

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

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   'admin' => false
);
或者,如果使用多个前缀,则可以动态删除前缀名称,如下所示:

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

尝试在
登录操作中设置
'admin'=>false
。一个月一次,所有未来的URL都会使用它,直到你“走出”网站prefix@Ross我想你应该回答这个问题。我很确定这就是正在发生的事。罗斯,回答这个问题,这样我就可以在应该得到表扬的地方给予表扬!