Symfony2在集成测试中通过API对用户进行身份验证
我想通过运行集成测试的API(外部用户提供程序)对用户进行身份验证 my config_test.ymlSymfony2在集成测试中通过API对用户进行身份验证,symfony,authentication,redis,integration-testing,wsse,Symfony,Authentication,Redis,Integration Testing,Wsse,我想通过运行集成测试的API(外部用户提供程序)对用户进行身份验证 my config_test.yml imports: - { resource: config.yml } - { resource: parameters_test.yml } framework: test: ~ session: storage_id: session.storage.mock_file monolog: handlers: ma
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."
我猜存储的会话发生了一些问题。
我在dev和prod上使用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用户是否都可写
“设置权限”
另外两个可能的错误原因:
无状态:在防火墙
部分的防火墙上为true
。不会创建ContextListener
,也不会将令牌保存到会话中。将匿名令牌分配给下一个请求stateless:true
如果启用了记住我
功能,您还可以使用记住我
而不是匿名令牌
。这个代币也不是完全成熟的config\u test.yml
中的intercept\u redirects
为false,因为它可能会中断所有重定向
web_profiler:
toolbar: false
intercept_redirects: false
权限是完全正确的,
无状态
?您的身份验证和用户信息url是否在同一防火墙下?您使用什么身份验证类型?与无状态身份验证相同。是的,两者都在同一防火墙内。我的提供程序类型是rest_webservice(自定义)还记得我使用Redis来存储会话您是否对后续请求使用相同的Client
?$Client=WebTestCase::createClient()$客户->提交(…)$客户->请求(…)代码>,等等?