我已经构建了一个简单的网站,并使用找到的here ACL指南添加了身份验证。我想我已经跟着它了。
我的问题是:
登录后,如果我尝试访问有效的URL,则会再次添加路径文件夹。
例如访问:
projectpath/controllerpath/action
重定向到
projectpath/projectpath/controllerpath/action
我注意到的事情:
修改
今天早上我安装了CakePHP 2.5.3的新版本。然后,我手动复制除路由文件之外的所有文件。仍然得到同样的错误。
任何可能导致此问题的想法?
修改 我已经进步了一点。我删除了ACL组件并使用了Auth组件。
问题似乎只发生在登录用户尝试访问未经授权的网址时。来自蛋糕
属性
AuthComponent::$unauthorizedRedirect
控制未经授权访问的处理。默认情况下,未授权用户被重定向到引用者URL或AuthComponent :: $ loginAction或'/'。如果设置为false,则抛出ForbiddenException异常而不是重定向。
在我的App Controller中
public $components = array(
'DebugKit.Toolbar',
'Auth' => array(
'redirectUrl' => array(
'controller' => 'pages',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'user',
'action' => 'login',
'home'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
),
'unauthorizedRedirect'=> false,// I have added this line
'Session',
'authorize' => array('Controller')
)
);
这是有效的(因为它根本不重定向)。任何人都可以解释如何根据文档将未经授权的重定向到正确的路由吗?
修改 这是我在App Controller中的beforeFilter
public function beforeFilter() {
$this->Auth->allow('display');
/*if($this->Auth->user('role') == 'apa'){
$this->Auth->redirectUrl = "/apa";
}else{
$this->Auth->redirectUrl = "/test";
}*/ //Moved logic to UserController
parent::beforeFilter();
}
修改 UserController
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
if($this->Auth->user('role') == 'apa'){
$this->Auth->redirectUrl = "/apa";
}else{
$this->Auth->redirectUrl = "/test";
}
return $this->redirect($this->Auth->redirectUrl);
}
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
答案 0 :(得分:0)
尝试在AuthComponent初始化时添加loginAction和loginRedirect属性,如下所示:
'Auth' => array(
'loginAction' => array('admin' => false, 'controller' => 'users', 'action' => 'login'),
'loginRedirect' => array('admin' => false, 'controller' => 'pages', 'action' => 'index'), // redirected here after login success
'logoutRedirect' => array(
'controller' => 'user',
'action' => 'login',
'home'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
), ...
此外,AuthComponent :: redirectUrl是一个方法,而不是属性,自v2.3起不推荐使用它。
参考此处:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html