[英]Symfony2 Firewall not preventing access
我想我不完全了解symfony的防火牆和訪問控制的概念,但這是我的理解。
我已經正確安裝和配置了FOSUserBundle。
我創建了一些角色:
role_hierarchy:
ROLE_COACH: [ROLE_USER]
ROLE_EDITOR: [ROLE_USER]
ROLE_PREMIUM_COACH : [ROLE_USER, ROLE_COACH]
ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN, ROLE_COACH, ROLE_EDITOR, ROLE_PREMIUM_COACH]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
如果他們沒有登錄,因此如果他們沒有ROLE_USER角色,我想防止他們訪問url / dashboard。
這是我的防火牆:
firewalls:
# -> custom firewall for the admin area of the URL
admin:
pattern: /admin(.*)
form_login:
provider: fos_userbundle
login_path: /admin/login
use_forward: false
check_path: /admin/login_check
failure_path: null
logout:
path: /admin/logout
anonymous: true
# -> end custom configuration
# defaut login area for standard users
main:
pattern: .*
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
use_forward: false
check_path: /login_check
failure_path: null
logout: true
anonymous: true
這是我在access_control下添加的內容:
- { path: ^/dashboard, role: [ROLE_USER]}
- { path: ^/dashboard/blog, role: [ROLE_EDITOR]}
即使沒有連接並且我也不想訪問,也可以訪問頁面/ dashboard。 我怎么了?
從那個pastebin
- { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
這行是導致您的問題的原因。 這告訴symfony2安全系統,每個用戶都可以訪問所有內容(如果忽略FOS,這就是“非常重要的規則”),因此,一旦滿足,就不會再進行其他控制(如- { path: ^/OSC/dashboard, role: ROLE_USER}
)
可能的解決方案:
1)將那條線放在ACL的底部。
PRO :您的應用程序可以工作
缺點 :如果未正確設置所有ACL,則會遇到“安全性”問題,或者某些未經授權的用戶可以訪問根據您的邏輯無法訪問的頁面。
2)完全刪除該行
PRO :您的應用程序不會遭受安全性問題和未經授權的訪問
缺點 :您必須明確且正確地設置所有路由,但是如果您要構建一個強大的應用程序,這是非常“自然的”
你通過得到的原因是因為沒有一個防火牆/dashboard
,但(假設你想設置SonataAdminBundle
),這不是你應該有什么access_control
這是我尋找Sonata
:
access_control:
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login-check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_ADMIN }
- { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }
否則,您的防火牆定義就可以了。
如果要配置自己的自定義儀表板,則需要定義另一個防火牆條目,與admin
防火牆非常相似。
編輯 :
嘗試將模式更改為: ^/.*
如果只想阻止/OSC
則: /OSC
(. /OSC(.*)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.