4

我在 ZF2 上有一个完全运行的 mvc 应用程序。我想从命令行运行一些操作。我已经正确设置了我的控制台路由和其他环境。当我从 CLI 运行我的应用程序时,我得到了 Permission denied 异常,如下所示:

'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 用户运行操作?

编辑

以下是 bjyauthorize.global.php 中提到的控制器的警卫数组。

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

我也使用过 ZfcUser 。如何从 CLI 传递用户登录凭据。或者,如果有任何方法可以从 cli 使用用户会话。

谢谢

4

1 回答 1

4

我找到了解决方案。我无法授予 cli 用户权限,但它是通过在从 CLI 运行时禁用 bjyAuthorize 来完成的。

我找到了解决方案:如何在 ZF2 CLI 应用程序中使用 BjyAuthorize?

如果其他人发现此问题,以下是对其的解释:

要在从 cli 运行时禁用 bjyAuthorize,我们可以在 application.config.php 中执行以下操作。

最初不要在 application.config.php 数组中添加“BjyAuthorize”和“BjyProfiler”。检查控制台,如果不是控制台访问,则将它们添加到 $config 数组中。

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

还需要在 Application/Module.php 的 onBootstrap 方法中检查控制台,如下所示

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

最后但同样重要的是,不要忘记导入 Console 类:

use Zend\Console\Console;
于 2014-01-15T10:04:40.523 回答