根据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
只有当我尝试注入使用它之前定义的访问管理器时才会发生错误。
答案 0 :(得分:1)
服务security.access_manager
取决于security.voters
。你有一个无限的依赖循环。
由于security.access_manager
依靠选民做出决定,因此在你自己的选民中提出要求是没有意义的。