我的应用程序的公共区域无需登录或身份验证即可访问,当我在控制器中运行此代码时,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");
}
我得到一个例外:
未捕获的异常“Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException”与消息“安全上下文不包含身份验证令牌。一个可能的原因可能是没有为此 URL 配置防火墙。
在控制器中的第一个命令之后立即调用该服务。
谢谢