安全选民 - 500 错误

Security Voters - 500 error

根据 symfony 文档,当我尝试将 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

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

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

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