[英]Symfony2 Security Configuration - How to use two firewalls side by side
我想使用一個帶有2個防火牆的symfony2應用程序:一個使用前端數據庫用戶,另一個使用內存用戶后端。
我已經閱讀了所有文檔和各種stackoverflow問題,但是無法解決我的問題。
到目前為止,這是我的security.yml配置:
security:
firewalls:
frontend:
pattern: ^/
provider: fe_users
anonymous: ~
form_login:
username_parameter: _email
login_path: _login
check_path: _login_check
remember_me: true
default_target_path: _profile
#always_use_default_target_path: true
logout:
path: /logout
target: /
remember_me:
key: MiPassphrase
lifetime: 1800
path: /.*
domain: ~
backend:
pattern: ^/backend
provider: be_users
anonymous: ~
http_basic:
realm: ""
access_control:
- { path: ^/backend$, roles: ROLE_ADMIN }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
encoders:
vv\xx\Entity\User:
algorithm: bcrypt
Symfony\Component\Security\Core\User\User: plaintext
providers:
fe_users:
entity: { class: vvxx:User, property: email }
be_users:
memory:
users:
d: { password: c, roles: 'ROLE_ADMIN' }
那會發生什么:
前端身份驗證工作正常。 如果用戶未登錄到前端,則對/ backend的訪問會將我重定向到/ login。 如果用戶登錄(並通過身份驗證)到前端,則/ backend的訪問使我拒絕403訪問。 永遠不會出現“經典” http身份驗證登錄表單。
有人可以看看我的配置並弄清楚我在做什么錯嗎?
非常感謝您的幫助:)
防火牆在首次匹配的基礎上進行匹配。 在防火牆列表中,限制性最小的模式應該排在限制性較大的模式之后。 當前,您的frontend
模式可以匹配所有內容,因此永遠不會檢查您的backend
模式。
正如Igor Pantovic所建議的那樣:
嘗試顛倒防火牆順序,將后端放在前端之前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.