我已经搜索过,虽然人们已经在本网站和其他地方询问了类似的问题,但其中有几个问题没有得到答复,其余的根本不适用于我(不同的错误,旧蛋糕版本等) )。
我的core.php中设置了两个路由前缀。那些是“管理员”和“温和”。我希望所有用户都可以通过/users/login
登录,然后重定向到/account
。
当我转到需要身份验证的标准(非加前缀)页面,例如/account
时,我被重定向到/admin/users/login
(我不想要前缀)。
登录后,我成功重定向到/account
。 (至少那部分是有效的)
这是我的AppController代码
public $components = array('Session',
'Auth' => array(
'loginAction' => array('prefix' => false, 'admin' => false, 'moderate' => false, 'controller' => 'users', 'action' => 'login'),
'loginRedirect' => array('prefix' => false, 'admin' => false, 'moderate' => false, 'controller' => 'account', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'index', 'prefix' => false, 'admin' => false, 'moderate' => false),
'authError' => "You can't access that page",
'authorize' => array('Controller')
)
); // components
我也尝试将所有' false '更改为' null '。没有骰子。我正在使用CakePHP 2.2.4
编辑2014年11月11日 因为人们还在回答我只想注意这个问题已经解决了。我从来没有想出确切的问题是什么,所以我从来没有发布官方/接受的答案。我怀疑这是我的路由问题。我上面提供的AppController代码是正确的。
答案 0 :(得分:2)
尝试使用:
$this->Auth->loginAction = '/users/login';
希望有所帮助!
答案 1 :(得分:0)
将以下代码放在AppController.Hope中帮助。
public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login','admin' => false, 'prefix' => false, 'moderate' => false);
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login','admin' => false, 'prefix' => false, 'moderate' => false);
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'home','admin' => false, 'prefix' => false, 'moderate' => false);
}
答案 2 :(得分:0)
在您的APP/src/Controller/AppController.php
中:
$this->loadComponent('Auth', [
'loginAction' => [
'prefix' => false, // tells the app not to use any prefix
'controller' => 'Users', // change to your preference
'action' => 'login', // change to your preference
],
// loginRedirect, logoutRedirect etc.
// …
]);
与将单个前缀列入黑名单相比,这是一种更加灵活且面向未来的方式,因为您可能事先不知道它们可能是或不是。
确认此功能适用于我的CakePHP。通过删除'prefix' => false
进行测试,它可以使应用重定向到带前缀的登录页面,例如/admin/users/login
,恢复该行将其修复。