我在Cakephp应用程序中使用admin
前缀,用于某些管理员视图。我还使用Auth根据User表中的role
字段限制对这些视图的访问。很标准。
问题是,当未经授权的用户试图转到admin/users
时(在这种情况下禁止索引操作),它们会被重定向到/admin/users/login
,当然,这不是不存在。
对于没有admin前缀的操作,不会发生这种情况。那些表现得很好。
为什么用户被发送到管理员前缀和禁止操作前面的登录名?
答案 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
);