0

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

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

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

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

4

1 回答 1

0

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

self::$_client->request(
    'GET',
    '/items',
    array(),
    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' 时,(是的,只是大写的标题!)它可以工作,并且 $格式的值是预期的值(即:“json”)。感谢 Cerad 的支持以及一些我不知道 Symfony 中存在的命令;-)

于 2021-04-30T16:05:20.093 回答