我有我的UsersController,当然扩展了我的app_controller。
在我的app_controller中,我将$ components定义为:
$components = array('Acl', 'Auth', 'Session', 'RequestHandler');
当我尝试访问我的用户索引视图时,出现错误(这意味着控制器中未激活Auth组件)。
BUT
如果我将此行直接放在我的UsersController中:
$components = array('Acl', 'Auth', 'Session', 'RequestHandler');
页面按预期工作。
我的远程服务器有后一个问题。但我的本地开发环境似乎从app_controller中扩展了$ components。
有谁知道为什么会这样?
这是我的app_controller源代码:
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.
}
}
答案 0 :(得分:0)
我有这样的问题回来了(但我认为它已被修复)。蛋糕对'Auth'和'的顺序很敏感。组件声明中的“Acl”。尝试将它们交换成圆形。我在你的两个代码示例中看到他们被交换。