ログインまたは認証なしでアクセスできるアプリのパブリック領域があり、コントローラーでこのコードを実行すると、期待どおりif ($securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY'))
に取得true
されます。
次に、次のように定義されたサービスがあります。
main.services:
class: App\MainBundle\Services\MainServices
arguments: [ @doctrine.orm.entity_manager, @security.context, @service_container ]
しかし、このコードを実行すると:
public function __construct(EntityManager $em, SecurityContext $securityContext, Container $container) {
$this->em = $em;
$this->container = $container;
$this->securityContext = $securityContext;
error_log("MAIN");
if ($securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY'))
error_log("MAIN Anon");
else
error_log("MAIN no anon");
}
例外があります:
メッセージ「セキュリティ コンテキストには認証トークンが含まれていません。考えられる理由の 1 つは、この URL にファイアウォールが構成されていないことです。
サービスは、コントローラーの最初のコマンドの直後に呼び出されます。
ありがとうございました