我admin
在我的 Cakephp 应用程序中使用前缀,用于一些管理视图。我还使用 Auth 来限制对这些视图的访问,基于role
User 表中的一个字段。很标准。
问题是,当未经授权的用户尝试访问时,例如admin/users
,(在这种情况下禁止索引操作),他们会被重定向到/admin/users/login
当然不存在的用户。
没有管理员前缀的操作不会发生这种情况。那些表现得很好。
为什么将用户发送到以管理员前缀和禁止操作为前缀的登录名?
我admin
在我的 Cakephp 应用程序中使用前缀,用于一些管理视图。我还使用 Auth 来限制对这些视图的访问,基于role
User 表中的一个字段。很标准。
问题是,当未经授权的用户尝试访问时,例如admin/users
,(在这种情况下禁止索引操作),他们会被重定向到/admin/users/login
当然不存在的用户。
没有管理员前缀的操作不会发生这种情况。那些表现得很好。
为什么将用户发送到以管理员前缀和禁止操作为前缀的登录名?
任何对此仍有问题的人,根据文档,您可以在 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')
),
);
这最终解决了我的问题。希望它也适用于你。
您需要覆盖路由数组中的特定前缀。
$this->Auth->loginAction = array(
'controller' => 'users',
'action' => 'login',
'admin' => false
);
或者,如果您使用多个前缀,则可以像这样动态删除前缀名称:
$this->Auth->loginAction = array(
'controller' => 'users',
'action' => 'login',
$this->request->prefix => false
);