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

时间:2014-11-20 14:02:56

标签: symfony authentication redis integration-testing wsse

我想通过运行集成测试的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

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

"Full authentication is required to access this resource."

我猜想存储的会话正在发生一些事情。 我在dev和prod上使用Redis来存储会话。 由于

而在测试环境上模拟会话
"Failed to start the session because headers have already been sent by "/path/to/bin/phpunit" at line 2."

手动操作就像魅力一样。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  2. stateless: true如果RememberMeToken功能已启用,您也可以AnonymousToken而不是remember_me。此令牌也未完全成熟。

  3. <强>更新

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

    web_profiler:
        toolbar: false
        intercept_redirects: false