Symfony2通过集成测试的API对用户进行身份验证



我想通过运行集成测试的 API(外部用户提供程序)对用户进行身份验证。

我的config_test.yml

imports:
    - { resource: config.yml }
    - { resource: parameters_test.yml }
framework:
    test: ~
    session:
        storage_id: session.storage.mock_file
monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: info

登录(成功)后,下一步是询问用户信息,我得到:

"Full authentication is required to access this resource."

我想存储的会话发生了一些事情。我正在开发和生产上使用 Redis 来存储会话。测试环境中的模拟会话,因为

"Failed to start the session because headers have already been sent by "/path/to/bin/phpunit" at line 2."

手动执行此操作就像一种魅力。

session.storage.mock_file默认使用%kernel.cache_dir%/sessions来存储会话的文件。检查此文件夹对于服务器用户和 cli 用户是否都是可写的。

"设置权限"http://symfony.com/doc/current/book/installation.html#configuration-and-setup

另外 2 个可能的错误原因:

  1. stateless: true firewalls部分中的防火墙上。不会创建ContextListener,也不会将令牌保存到会话中。AnonymousToken 被分配给下一个请求。

  2. stateless: true如果启用了该功能remember_me您也可以使用RememberMeToken而不是AnonymousToken。这个令牌也不是完全成熟的。

更新

确保intercept_redirectsconfig_test.yml中为 false,因为它可能会破坏所有重定向。

web_profiler:
    toolbar: false
    intercept_redirects: false

相关内容

  • 没有找到相关文章

最新更新