3

admin在我的 Cakephp 应用程序中使用前缀,用于一些管理视图。我还使用 Auth 来限制对这些视图的访问,基于roleUser 表中的一个字段。很标准。

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

没有管理员前缀的操作不会发生这种情况。那些表现得很好。

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

4

2 回答 2

7

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

使用数组并设置 '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')
    ),
);

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

于 2013-02-22T18:27:54.783 回答
1

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

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

或者,如果您使用多个前缀,则可以像这样动态删除前缀名称:

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   $this->request->prefix => false
);
于 2013-11-04T05:29:57.333 回答