我正在尝试实现此处的ACL教程: http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html
我按照所有说明操作,但是当我尝试转到 [my_site] / users / add ERR_TOO_MANY_REDIRECTS错误时。
我在Cakephp网站上找到了这个:
例如,当我们有一个接收数据的元素时会发生这种情况 从控制器的方法,以及该方法的实现 要求进行登录会创建一个无限循环 最终会导致浏览器拒绝重定向
他们建议将此作为修复:
function beforeFilter () {
$ this -> Auth -> allow ( 'CONTROLLER_NAME' );
}
这似乎不起作用。
如果我从这更改AppController:
public function beforeFilter() {
$this->Auth->allow('index', 'view', 'login', 'add');
}
为:
public function beforeFilter() {
$this->Auth->allow('*');
}
我不再收到错误,但会被重定向到 [my_site] / users / login
关于我无法查看用户添加页面的错误建议? TIA!
UserController中:
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add');
}
登录功能(UsersController):
Public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
Auth Component Loader:
public $components = array(
'Session',
'RequestHandler',
'Auth' => array(
'loginRedirect' => array('controller' => 'projects', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
)
);
答案 0 :(得分:1)
您获得的错误与ACL无关,但是Auth组件拒绝访问您尝试重定向用户的UsersController
添加和登录功能。通过在add
(而不是login
)中添加此行,确保UsersController
和AppController
功能是公开的:
public function beforeFilter() {
$this->Auth->allow(array('add', 'login'));
}
您现在遇到的循环是因为add和login函数不是公共的,因此循环看起来像:add -> Unauthorized -> login -> Unauthorized -> login
......等等。
答案 1 :(得分:0)
请将beforeFilter()
的{{1}}更改为:
Auth->allow('_CONTROLLER_NAME')
希望对你有用!
答案 2 :(得分:0)
我终于设法通过帮助Brian解决了这个问题:
你有requestAction()代码吗?如果是这样,请尝试在
中添加此内容
AppController::beforeFilter()
if (isset($this->params['requested'])) $this->Auth->allow($this->action);