Хорошо, у меня есть проблема, но я думаю, что это не так сложно, поэтому было бы здорово, если бы кто-то помог мне.
1) У меня есть UserController, который расширяет AbstractRestfulController, и он отлично работает.
2) Затем мне нужно было проверить разрешение на доступ к действиям этого контроллера. Если я использую метод «checkPermission» в каждом контроллере, он работает довольно хорошо, но я хочу, чтобы этот метод был выполнен в событии preDispatch. И вот некоторые проблемы:
Я делаю так:
module.php
public function onBootstrap(MvcEvent $e)
{
$em = $e->getApplication()->getEventManager();
$em->attach('dispatch', array($this, 'preDispatch'), +100);
}
Мой метод «checkPermission» проверяет так (ничего особенного, я думаю):
if (!$this->isAllowed($role, $this->routeMatch->getParam('controller'), $this->routeMatch->getParam('action'))) {
Таким образом, проблема: getParam (‘action’) возвращает null (это означает, что в событии preDispatch приложение не знает, какое действие ему необходимо выполнить). Как я могу заставить его работать так, как я хочу? Или вот главный вопрос: Когда getParam (‘action’) может вернуть значение? Только в событии onDispatch?
так как это спокойный API, он никогда не вернет имя действия. в добавление с применением ACL для Rest API не является хорошей практикой.
Используйте заголовки Rest API Authentication вместо ACL.
обратитесь по этой ссылке
—SJ
Других решений пока нет …