问题描述
我正在使用防火墙和守卫身份验证器使用 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 中的命令;-)