2014-09-23 27 views
0

好的,我有一個問題,但我認爲它不是那麼複雜,所以如果有人幫助我會很好。 1)我有擴展AbstractRestfulController的UserController,它工作正常。 2)然後我需要檢查訪問該控制器的權限。如果我在每個控制器中使用「checkPermission」方法,它的工作效果很好,但我想在preDispatch事件中完成此方法。這裏有一些問題: 我這樣做: Module.phpZF2 REST API + ACL不返回predispatch中的動作名稱

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事件?

回答

1

既然它是一個安靜的API,它永遠不會返回操作名稱。在將ACL應用於Rest API中添加並不是一種好的做法。 使用Rest API Authentication HEADERS代替ACL。
refer this link
--SJ