代码之家  ›  专栏  ›  技术社区  ›  LokiTheCreator

Symfony基本身份验证在测试中不起作用

  •  0
  • LokiTheCreator  · 技术社区  · 1 年前

    我使用的是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== ,因此授权应该有效,因为邮递员请求中的标头相同

    我尝试了什么,但没有成功:

    1. 传递信任 createClient : self::createClient([], ['PHP_AUTH_USER' => 'dev', 'PHP_AUTH_PW' => 'dev']);
    2. 手动向请求添加标头: $client->request('GET', self::URL, [], [], ['HTTP_AUTHORIZATION' => 'Basic ' . base64_encode('dev:dev')]);
    3. 添加头像 'Content-Type' => 'application/json' 以防万一 什么都没用。我还能尝试什么?

    我的测试非常简单:

    $this->client->request(
                'PUT',
                self::URL,
                [],
                [],
                [],
                self::REQUEST_BODY
            );
    
            self::assertResponseStatusCodeSame(404); //here I get 401 error and test fails
    
    0 回复  |  直到 1 年前
    推荐文章