我想通过运行集成测试的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."
手动操作就像魅力一样。
答案 0 :(得分:1)
session.storage.mock_file
默认使用%kernel.cache_dir%/sessions
来存储会话文件。检查此文件夹是否对服务器用户和cli用户都可写。
'设置权限' http://symfony.com/doc/current/book/installation.html#configuration-and-setup
另外两个可能的错误原因:
stateless: true
部分的防火墙上 firewalls
。未创建ContextListener
,并且令牌未保存到会话中。 AnonymousToken被分配给下一个请求。
stateless: true
如果RememberMeToken
功能已启用,您也可以AnonymousToken
而不是remember_me
。此令牌也未完全成熟。
<强>更新强>
确保intercept_redirects
中的config_test.yml
为false,因为它可能会破坏所有重定向。
web_profiler:
toolbar: false
intercept_redirects: false