在Symfony的食譜中,有一個標題爲How to Simulate Authentication with a Token in a Functional Test的頁面。其中說:如何在Symfony中測試安全防火牆後面的頁面?
How to Simulate HTTP Authentication in a Functional Test中描述的技術更清潔,因此是首選的方法。
此外,頁面上,上面的鏈接的報價來,該文件說:
的竅門是在您的防火牆http_basic鍵,沿form_login關鍵
這告訴我可以使用form_login
密鑰以及http_basic
密鑰以及http_basic
優先。
這裏是我的config_test.yml
配置文件:
imports:
- { resource: config_dev.yml }
framework:
test: ~
session:
storage_id: session.storage.mock_file
profiler:
collect: false
web_profiler:
toolbar: false
intercept_redirects: false
swiftmailer:
disable_delivery: true
liip_functional_test:
cache_sqlite_db: true
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
security:
firewalls:
default:
http_basic: ~
然而,當我在test
環境中打開我的申請,我仍然得到重定向到URL login_form。
爲什麼不設置http_basic
就像文檔說的那樣,即它被激活而不是form_login
?
我試過了。問題是我必須複製'config_test.yml'中的很多設置,因爲它已經包含'config_dev.yml'。如果我想按照你的建議做,我必須在'config_test.yml'中重複'config_dev.yml',這樣我就可以包含'security_test.yml'。我在談論標準分配;如果你創建一個新的應用程序並嘗試擁有兩個安全配置,你可能會看到我在說什麼。這就是爲什麼我問是否有辦法強制'安全'鍵被覆蓋。 –
安全性不能被覆蓋。爲了避免重複,將共享配置移動到config.yml並覆蓋config _ *中所需的部分。yml – Valentas
在標準分發中,共享配置已經在'config.yml'中。然而,'config_dev.yml'和'config_test.yml'之間共享的東西不是。例如,這兩種環境('dev'和'test')都包含profiler,工具欄,'router_dev.yml'等等。如果我不想在'config_test.yml'中包含'config_dev.yml',我將不得不復制這些內容。 –