Я создал плагин под названием «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
, где я настроил аутентификацию:
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'
);
IssueTrackerAppController
? если это так, вам нужно добавить еще один вызовparent::beforeFilter();
внутри него - person Tim Joyce   schedule 15.07.2013parent::beforeFilter();
. - person JorickL   schedule 15.07.2013