Cakephp 2 ACL错误\u太多\u重定向
我正在尝试实现以下ACL教程: 但是,当我尝试转到[my_site]/users/addERR_TOO_MANY_重定向错误时,我遵循了所有说明 我在Cakephp网站上发现: 例如,当我们有一个接收数据的元素时,就会发生这种情况 从一个控制器的方法,以及这个方法的实现 要求执行登录将创建一个无限循环 最终将导致浏览器拒绝重定向 他们建议将此作为解决方案:Cakephp 2 ACL错误\u太多\u重定向,php,cakephp,cakephp-2.0,acl,Php,Cakephp,Cakephp 2.0,Acl,我正在尝试实现以下ACL教程: 但是,当我尝试转到[my_site]/users/addERR_TOO_MANY_重定向错误时,我遵循了所有说明 我在Cakephp网站上发现: 例如,当我们有一个接收数据的元素时,就会发生这种情况 从一个控制器的方法,以及这个方法的实现 要求执行登录将创建一个无限循环 最终将导致浏览器拒绝重定向 他们建议将此作为解决方案: function beforeFilter () { $ this -> Auth -> allow ( 'CONTR
function beforeFilter () {
$ this -> Auth -> allow ( 'CONTROLLER_NAME' );
}
这似乎不起作用
如果我从以下位置更改AppController:
public function beforeFilter() {
$this->Auth->allow('index', 'view', 'login', 'add');
}
致:
我不再收到错误,但被重定向到[我的网站]/users/login
关于我做错了什么而无法查看用户添加页面的任何建议?
蒂亚
用户控制器:
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add');
}
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'));
}
}
}
登录功能(UsersController):
验证组件加载程序:
public $components = array(
'Session',
'RequestHandler',
'Auth' => array(
'loginRedirect' => array('controller' => 'projects', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
)
);
您所遇到的错误与ACL无关,但是Auth组件拒绝访问您的
UsersController
add和login函数,它正试图将用户重定向到这些函数。通过在用户控制器
(而不是应用控制器
)中添加此行,确保添加
和登录
功能是公共的:
您现在遇到的循环是因为add和login函数不是公共的,因此循环看起来像:
add->Unauthorized->login->Unauthorized->login
。。。等等。请将您的beforeFilter()
的Auth->allow(“\u CONTROLLER\u NAME”)
更改为:
public function beforeFilter(){
$this->Auth->allow();
}
希望这对你有用 我终于在帮助下解决了这个问题,布莱恩: 您是否有requestAction()代码?如果是这样,请尝试将其添加到
请在筛选前向我们显示您的UserController
方法。编辑并添加了我的问题谢谢您的建议,我使用您提供的代码编辑了UsersController,但仍然得到相同的结果:(@Ronnyvdb如果您碰巧使用Chrome作为浏览器,请按F12打开控制台,转到“网络”选项卡,然后打开您想要访问的页面。它应该能够准确地说明循环将一直指向何处。显然,这不是登录功能,而是其他功能。这是控制台的屏幕截图:这里有一些有趣的东西……I c在UsersController中挂起了我的登录函数,只是回显“test”;我没有收到重定向错误,我编辑了我的问题并添加了登录函数,你知道我做错了什么吗?你的组件“构造函数”是什么样子的?你能添加加载AuthComponent
(从您的AppController
或UsersController
)到您的问题?
public function beforeFilter() {
$this->Auth->allow(array('add', 'login'));
}
public function beforeFilter(){
$this->Auth->allow();
}
AppController::beforeFilter()
if (isset($this->params['requested'])) $this->Auth->allow($this->action);