Symfony 5.1 到 5.2 单元测试不通过防护认证器进行认证

问题描述

我正在使用防火墙和守卫身份验证器使用 Symfony 5.1;

        secured_area:
        pattern:  ^/
        stateless: true
        provider: chain_provider
        guard:
            authenticators:
                - App\<pathToAuthenticator>
            entry_point: App\<pathToAuthenticator>

在 5.1 中一切正常。 我最近升级到 Symfony 5.2,除了单元测试之外几乎所有工作都很好。 当我进行逐步调试时,它不再像以前(在 5.1 中)那样进入 Authenticator

我的配置中缺少任何参数吗?认参数有变化吗?

解决方法

最终,我在测试中找到了 pb 和解决方案:

self::$_client->request(
    'GET','/items',array(),array('HTTP_Accept' => 'application/json','CONTENT_TYPE' => 'application/json'),json_encode($payload)
);

我有一个请求匹配器可以过滤 JSON 请求:

class JsonRequestMatcher implements RequestMatcherInterface
{
    public function matches(Request $request)
    {
        $format = $request->getPreferredFormat();
        return $format === "json";
    }
}

出于我尚未确定的原因,当请求匹配器中的标头发送“HTTP_Accept”$format 值为“html”并且请求未被处理时......然后它会进一步崩溃.

当我将“HTTP_Accept”更改为“HTTP_ACCEPT”时(是的,标题只是大写!)它可以工作,并且 $format 的值是预期的(即:“json” )。 感谢 Cerad 的支持和一些我不知道存在于 Symfony 中的命令;-)