安全选民 - 500错误

时间:2016-07-11 14:10:24

标签: silex

根据symfony doc,当我尝试将access_manager注入选民时,我得到了一个奇怪的错误。

bootstrap.php中

$app['security.voters'] = $app->share(function ($app) {
    return array(
        new UserVoter($app['security.access_manager']),
        new IncludeRolesVoter($app['security.access_manager'])
    );
});

选民

class UserVoter extends Voter
{
    const VIEW = 'v3.user_view';
    const EDIT = 'v3.user_edit';

    private $decisionManager;

    public function __construct(AccessDecisionManagerInterface $decisionManager)
    {
        $this->decisionManager = $decisionManager;
    }

错误

[Mon Jul 11 13:57:01.179118 2016] [:error] [pid 1201] [client 10.0.2.2:54292] PHP 256. {closure:/****/bootstrap.php:738-743}() /****/vendor/pimple/pimple/lib/Pimple.php:126

只有当我尝试注入使用它之前定义的访问管理器时才会发生错误。

1 个答案:

答案 0 :(得分:1)

服务security.access_manager取决于security.voters。你有一个无限的依赖循环。

由于security.access_manager依靠选民做出决定,因此在你自己的选民中提出要求是没有意义的。