2

我正在尝试实现此处找到的 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

关于我做错了什么我无法查看用户添加页面的任何建议?蒂亚!

用户控制器:

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'));
        }
    }
}

验证组件加载器:

public $components = array(
        'Session',
        'RequestHandler',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'projects', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        )
    );
4

3 回答 3

2

您收到的错误与 ACL 无关,而是与 Auth 组件拒绝访问您的UsersController添加和登录功能有关,它试图将用户重定向到该功能。确保addandlogin函数是公开的,通过在你的UsersController(而不是你的AppController)中添加这一行:

public function beforeFilter() {
    $this->Auth->allow(array('add', 'login'));
}

您现在遇到的循环是因为 add 和 login 函数不是公共的,因此循环看起来像:add -> Unauthorized -> login -> Unauthorized -> login...等等。

于 2013-01-28T13:23:26.930 回答
1

我终于设法在 Brian 的帮助下解决了这个问题:

你有 requestAction() 代码吗?如果是这样,请尝试将其添加到

AppController::beforeFilter() 

if (isset($this->params['requested'])) $this->Auth->allow($this->action); 
于 2013-01-29T21:49:07.193 回答
0

请将您beforeFilter()的 '更改Auth->allow('_CONTROLLER_NAME')为:

public function beforeFilter(){
    $this->Auth->allow();
}

希望对你有用!

于 2013-01-28T14:39:11.020 回答