微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 中的命令;-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。