cakephp2:使用Auth重定向循环

cakephp2:使用Auth重定向循环,cakephp,authentication,redirect,acl,Cakephp,Authentication,Redirect,Acl,我得到了一个重定向循环错误,我的生活,我不知道如何或为什么。以下是我的设置: 路由器 Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); class AppController extends Controller { public $components = array( 'DebugKit.Toolbar', 'Acl',

我得到了一个重定向循环错误,我的生活,我不知道如何或为什么。以下是我的设置:

路由器

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
class AppController extends Controller {
    public $components = array(
        'DebugKit.Toolbar',
        'Acl',
        'Auth' => array(
            'authorize' => array('Actions' => array('actionPath' => 'controllers')),
            'loginAction' => array('controller' => 'users', 'action' => 'login'),
            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        ),
        'Session'
    );
    var $helpers = array('Html', 'Form', 'Session');

    public function isAuthorized($user){
        return true;
    }

    function beforeFilter() {
    }
}
AppController

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
class AppController extends Controller {
    public $components = array(
        'DebugKit.Toolbar',
        'Acl',
        'Auth' => array(
            'authorize' => array('Actions' => array('actionPath' => 'controllers')),
            'loginAction' => array('controller' => 'users', 'action' => 'login'),
            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        ),
        'Session'
    );
    var $helpers = array('Html', 'Form', 'Session');

    public function isAuthorized($user){
        return true;
    }

    function beforeFilter() {
    }
}

这可能是因为您没有将display()方法设置为public。这就是为什么它可能会重定向到同一页面,而该页面未经身份验证

因此,您可以将“display()方法”放入pages控制器中,并使用以下代码访问公共控制器:

 //Define following method in your controller PagesController.php
 function beforeFilter()
 {
      $this->Auth->allow('display');
 }

希望它对你有用。如果不适合您,请询问。

我认为,没有必要在AppController中为Auth组件初始设置指定IsAuthroized()方法。您可以稍后尝试使用它。使用$this->Auth->allow()指定任何人都可以查看的操作。使用isAuthorized()确定特定用户是否可以访问操作。如果Auth->allow()设置为允许访问“display”,则不会为显示操作调用isAuthorized()-Auth->allow()在视图中使用$this->requestAction()覆盖isAuthorized(),该过程中可能包括其他控制器。确保他们拥有正确的权限。我知道这是一个非常老的问题,但这就是解决我问题的方法:
parent::beforeFilter()