4

我在ZF2上有一個完全運行的mvc應用程序。我想從命令行運行一些操作。我已經正確設置了我的控制檯路由和其他環境。當我從CLI運行我的應用程序,我得到許可被拒絕的例外是這樣的:允許bjyauthorize從CLI運行ZF2的mvc應用程序

'You are not authorized to access GeneratePdf\Controller\GeneratePdf\GeneratePdf:generate-all' in /var/www/zf2-reporting/module/BjyAuthorize/src/BjyAuthorize/Guard/Controller.php‌​:172 

我已經在我的數據庫某些用戶。我如何使用這些憑據來授權CLI用戶運行Actions?

編輯

以下是在用於bjyauthorize.global.php提到控制器衛兵陣列。

'guards' => array(
'BjyAuthorize\Guard\Controller' => array(array('controller' => 'GeneratePdf\Controller\GeneratePdf', 'roles' => array('admin', 'letters_admin')) 

我也使用過ZfcUser。我如何從CLI傳遞用戶登錄憑證。或者,如果有任何方式使用來自cli的用戶會話。

謝謝

+0

你能告訴我們你的警衛設置嗎?看起來你並沒有將控制器添加到'BjyAuthorize \ Guard \ Controller'中。 – cptnk

+0

它已經在像這樣的守衛陣列中了:'guard'=> array( /*)如果此守衛在此處被指定(即它被啓用),它會阻止所有控制器和動作的 *訪問,除非在這裏指定。 *您可以省略'action'索引以允許訪問整個控制器 */ 'BjyAuthorize \ Guard \ Controller'=> array(array('controller'=>'GeneratePdf \ Controller \ GeneratePdf','roles' => array('admin','letters_admin'))如何在應用程序中傳遞用戶會話(我的應用程序也使用ZfcUser) – regeint

+0

我很確定你的cli沒有管理員角色,這就是爲什麼訪問是拒絕,嘗試驗證控制檯,然後訪問控制器 – cptnk

回答

4

我找到了解決方案。我無法爲cli用戶授予權限,但它已通過從CLI運行時禁用bjyAuthorize完成。

我發現這個解決方案:How to use BjyAuthorize in ZF2 CLI application?

這是對他人的解釋,如果他們發現了這個問題:

要禁用bjyAuthorize而從CLI運行,我們可以在application.config.php做到像下面。

最初不要在您的application.config.php數組中添加「BjyAuthorize」和「BjyProfiler」。檢查控制檯,如果不是控制檯訪問,則將它們添加到$ config數組中。

if (!Console::isConsole()) { 
    array_unshift($config['modules'], 'BjyAuthorize'); 
    array_unshift($config['modules'], 'BjyProfiler'); 
} 
return $config; 

而且有必要檢查控制檯應用程序/ Module.php的onBootstrap方法如下面

if (!Console::isConsole()) { 
     $authorize = $sm->get('BjyAuthorize\Service\Authorize'); 
     $acl = $authorize->getAcl(); 
     $role = $authorize->getIdentity(); 
    } 

最後但並非最不重要的,不要忘記導入Console類:

use Zend\Console\Console; 
相關問題