Symfony 5.1 到 5.2 单元测试不通过 guard 身份验证器进行身份验证
Symfony 5.1 to 5.2 unit testing do not authenticate via guard authenticator
我正在使用 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(),
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";
}
}
由于我尚未确定的原因,当 header 发送 'HTTP_Accept' $format 请求匹配器中的值为“html " 并且请求未被处理......然后它进一步崩溃。
当我将 'HTTP_Accept' 更改为 'HTTP_ACCEPT' 时,(是的,header 只是大写!)它起作用了,$format[= 的值22=] 是预期的(即:“json”)。
感谢 Cerad 的支持和一些我不知道 Symfony 中存在的命令 ;-)
我正在使用 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(),
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";
}
}
由于我尚未确定的原因,当 header 发送 'HTTP_Accept' $format 请求匹配器中的值为“html " 并且请求未被处理......然后它进一步崩溃。
当我将 'HTTP_Accept' 更改为 'HTTP_ACCEPT' 时,(是的,header 只是大写!)它起作用了,$format[= 的值22=] 是预期的(即:“json”)。 感谢 Cerad 的支持和一些我不知道 Symfony 中存在的命令 ;-)