CakePHP 2.3插件似乎没有扩展appcontroller

时间:2013-07-15 11:47:10

标签: cakephp authentication plugins cakephp-2.3

我创建了一个名为“IssueTracker”的插件,该插件位于app/Plugin/IssueTracker。我创建了一个名为Tickets的控制器,可以在www.example.com/issue_tracker/tickets/访问它。但是,仅适用于排名为“Admin”的登录用户。

这不是我所希望的,所以我在Plugin/IssueTracker/Controller/TicketsController.php添加了以下内容:

public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index');
}

我希望通过这段代码(我在我的app/Controller/中的其他几个控制器中使用它将继承自我的AppController.php文件。TicketsController.php文件扩展了IssueTrackerAppController(像这样):

class TicketsController extends IssueTrackerAppController { 
//functions goes in here
}

在我的Plugin/Controller文件夹中,我创建了文件IssueTrackerAppController,扩展了AppController

在我的AppController.php文件中,我已经定义了'index''view'是公共行为。但是,出于某种原因,它在我的插件中不起作用。

我有什么东西在监督吗?当我以未登录用户(访客)的身份访问www.example.com/issue_tracker/tickets时,它告诉我需要登录。如果我以用户身份登录,但不以管理员身份登录,则Auth组件将不允许我进入并显示登录表单。

应该有办法让Auth在插件中工作,对吧?

编辑

以下是我配置了Auth:{/ p>的AppController.php代码段

public $components = array(
        'Auth' => array(
            'loginAction' => array('controller' => 'users', 'action' => 'login', 'plugin' => false),
            'loginRedirect' => array('plugin' => false, 'controller' => 'ervaringen', 'action' => 'add'),
            'logoutRedirect' => array('plugin' => false, 'controller' => 'ervaringen', 'action' => 'index'),
            'authorize' => array('controller'),
            'flash' => array(
                'element' => 'error',
                'key' => 'auth',
                'params' => array(
                    'heading' => 'Waarschuwing!')
            ),
            'authError' => 'Je moet inloggen om deze inhoud te bekijken.',
        ),
        'Session',
        'DebugKit.Toolbar'
    ); 

1 个答案:

答案 0 :(得分:1)

神秘解决了。

重新扫描插件中的所有代码后,我注意到我项目中的一位同事使用了$variable = $this->requestAction(link/here/with/id/etc);,这导致了控制器功能。 beforeFilter()不允许以任何方式使用该特定功能,从而导致功能被拒绝' bij Auth系统。

我已在$this->Auth->allow('function');插件的beforeFilter()中添加了此特定功能,现在它正在运行。