4

ユーザーで is_granted を呼び出す必要がある投票者を作成しました。

投票者に security.authorization_checker サービスを注入すると、次のエラーが発生します

CheckCircularReferencesPass.php 行 69 の ServiceCircularReferenceException: サービス「manager_voter」の循環参照が検出されました。パス:「manager_voter -> security.authorization_checker -> security.access.decision_manager -> manager_voter」。

コンテナ全体を注入する以外に方法はありませんか? これは正常ですか?

編集:

コントローラーから有権者を呼び出しています:

    if (false === $this->get('security.authorization_checker')->isGranted('manage', $associate)) {
        throw new AccessDeniedException('Unauthorised access!');
    }

この投票者では、ユーザーの役割を確認する必要があります。

if ($this->container->get('security.authorization_checker')->isGranted('ROLE_COMPANY_MANAGER'))
                {
                    return true;
                }

もちろん、これはループにつながります。そのループを取得しない方法は? ユーザーに対して $user->getRoles を呼び出しても、私の間違いでなければ、ロール階層は考慮されません。

4

1 に答える 1