我创建了一个名为“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'
);
答案 0 :(得分:1)
神秘解决了。
重新扫描插件中的所有代码后,我注意到我项目中的一位同事使用了$variable = $this->requestAction(link/here/with/id/etc);
,这导致了控制器功能。 beforeFilter()
不允许以任何方式使用该特定功能,从而导致功能被拒绝' bij Auth
系统。
我已在$this->Auth->allow('function');
插件的beforeFilter()
中添加了此特定功能,现在它正在运行。