Cakephp my controller本机扩展app_controller$组件和$html帮助程序?

Cakephp my controller本机扩展app_controller$组件和$html帮助程序?,cakephp,login,components,authentication,Cakephp,Login,Components,Authentication,我有我的UsersController,它当然扩展了我的app\u控制器 在我的app_controller中,我将我的$组件定义为: $components = array('Acl', 'Auth', 'Session', 'RequestHandler'); 当我尝试访问我的用户索引视图时,我得到一个错误(这意味着Auth组件尚未在控制器中激活) 但是 如果我将此行直接放在我的UsersController中: $components = array('Acl', 'Auth', 'Se

我有我的UsersController,它当然扩展了我的app\u控制器

在我的app_controller中,我将我的$组件定义为:

$components = array('Acl', 'Auth', 'Session', 'RequestHandler');
当我尝试访问我的用户索引视图时,我得到一个错误(这意味着Auth组件尚未在控制器中激活)

但是

如果我将此行直接放在我的UsersController中:

$components = array('Acl', 'Auth', 'Session', 'RequestHandler');
页面按预期工作

我的远程服务器有后一个问题。但是我的本地开发环境似乎很好地扩展了app_控制器中的$components

有人知道为什么会这样吗

以下是我的app_控制器源代码:

class AppController extends Controller {

var $helpers = array('Html', 'Form', 'Session', 'Ajax', 'Javascript');   
var $components = array('Auth', 'Acl', 'Session', 'RequestHandler'); 

function beforeFilter() {
    //Configure AuthComponent  
    $this->Auth->authorize = 'actions';
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'cms');
    $this->Auth->logoutRedirect = array(Configure::read('Routing.admin') => false, 'controller' =>       'users', 'action' => 'logout');
    $this->Auth->actionPath = 'controllers/';
    $this->Auth->allow('display'); // Allows all action =>  pages for non logged in users.
 }
}

我很久以前就遇到过这样的问题(但我认为已经解决了)。Cake对组件声明中的“Auth”和“Acl”顺序很敏感。试着把它们交换一下。我在你的两个代码示例中看到它们被交换了。

你能粘贴你的应用程序控制器代码吗?cake默认情况下会合并值,因此您可能在其中一个控制器的uu构造中做了一些有趣的事情。我在上面添加了我的应用程序u控制器代码:)您是否也在您的用户控制器中使用
beforeFilter
?如果是这样的话:您是否从该回调中调用
parent::beforeFilter()
?harpax,是的,我今天早些时候尝试过。这是我早些时候在网上找到的一个建议。我猜这一定是php或apache配置与对象继承相关的设置差异。仍在搜索…如果在OtherController中使用beforeFilter(),则需要调用parent::beforeFilter(),否则会出现问题