我使用的是symfony 6.4。
我的安全配置非常简单:
security:
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'plaintext'
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
providers:
users_in_memory:
memory:
users:
'dev':
password: 'dev'
roles:
- 'ROLE_HTTP_AUTH_API'
firewalls:
main:
stateless: true
http_basic:
provider:
users_in_memory
为了测试,我在security.yaml中指定了用户名和密码。
如果我使用Postman来处理请求,一切都会很好。
我使用Basic Auth
dev:dev
资格证书。在请求的标题中,我有
Authorization Basic ZGV2OmRldg==
一切都按预期进行。
然而,在功能测试中,我经常遇到401错误。如果我在测试中使用var_dump Request标头,则会有一个标头
授权基础ZGV2OmRldg==
,因此授权应该有效,因为邮递员请求中的标头相同
我尝试了什么,但没有成功:
-
传递信任
createClient
:
self::createClient([], ['PHP_AUTH_USER' => 'dev', 'PHP_AUTH_PW' => 'dev']);
-
手动向请求添加标头:
$client->request('GET', self::URL, [], [], ['HTTP_AUTHORIZATION' => 'Basic ' . base64_encode('dev:dev')]);
-
添加头像
'Content-Type' => 'application/json'
以防万一
什么都没用。我还能尝试什么?
我的测试非常简单:
$this->client->request(
'PUT',
self::URL,
[],
[],
[],
self::REQUEST_BODY
);
self::assertResponseStatusCodeSame(404); //here I get 401 error and test fails