1

我创建了一个名为“IssueTracker”的插件,它位于app/Plugin/IssueTracker. 我创建了一个名为的控制器Tickets,它可以在www.example.com/issue_tracker/tickets/. 但是,仅适用于具有“管理员”等级的登录用户。

这不是我所希望的,所以我添加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在插件中工作,对吧?

编辑

下面是AppController.php我配置 Auth 的片段:

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

1 回答 1

1

谜团已揭开。

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

我已经在插件中添加了这个特定的功能$this->Auth->allow('function');beforeFilter()现在它可以工作了。

于 2013-07-23T11:40:32.783 回答