【发布时间】:2014-01-08 08:30:14
【问题描述】:
我在 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 使用用户会话。
谢谢
【问题讨论】:
-
你能告诉我们你的警卫设置吗?您似乎没有将控制器添加到“BjyAuthorize\Guard\Controller”。
-
它已经在像这样的保护数组中: 'guards' => array( /* 如果这里指定了这个保护(即它被启用),它将阻止 * 访问所有控制器和操作,除非它们在此处指定。 * 您可以省略 'action' 索引以允许访问整个控制器 */ 'BjyAuthorize\Guard\Controller' => array(array('controller' => 'GeneratePdf\Controller\GeneratePdf', ' roles' => array('admin', 'letters_admin')) 如何在应用程序中传递用户会话(我的应用程序也使用 ZfcUser)?
-
我很确定您的 cli 没有管理员角色,这就是拒绝访问的原因。尝试验证控制台,然后访问控制器。
-
我没有做任何事情来“验证控制台”。我只是像这样简单地运行cli:php public/index.php generate all, how to do authentication the console?
-
在您的控制台控制器中,您必须使用 github.com/ZF-Commons/ZfcUser/blob/master/src/ZfcUser/… 服务并验证您的 cli。出于安全考虑,这样做应该没问题,因为控制台路由只能通过控制台运行。或者,您可以创建一个控制台角色并将其添加到您的警卫中,但您仍然需要对控制台进行身份验证。
标签: php zend-framework2 command-line-interface zfcuser bjyauthorize