[英]More than one firewall at Symfony2 project security.yml, how to deal with pattern?
我正在一個需要兩個防火牆或安全區域的項目中工作。 第一個防火牆/安全區域將允許使用Salesforce作為提供者的HWIOAuthBundle登錄/注銷,第二個防火牆/安全區域將允許通過FOSUserBundle登錄/注銷,因為這是針對內部sysadmin的,依此類推。 我不確定如何正確設置security.yml
文件,因為我不知道如何處理pattern
參數。 我已經閱讀了安全參考,但對如何執行此操作一無所知。 這是我目前所擁有的:
firewalls:
#this is the public area accessed by/from iOs app and only users registered at Salesforce as rep can login
rep_area:
methods: [GET, POST]
pattern: ^/
anonymous: true
logout: true
#this is the secured area accessed through web browser and only internals are allowed to login
admin_area:
pattern: ^/
anonymous: ~
在這種情況下應如何配置pattern
?
更新:防火牆不起作用
這是用戶回答后防火牆部分的樣子:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
#this is the secured area accessed through web browser and only internals are allowed to login
admin_area:
pattern: ^/admin
anonymous: ~
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
post_only: true
always_use_default_target_path: true
target_path_parameter: _target_path
use_referer: false
failure_path: null
failure_forward: false
logout:
path: fos_user_security_logout
target: /
#this is the public area accessed by/from iOs app and only users registered at Salesforce as rep can login
rep_area:
methods: [GET, POST]
pattern: ^/
anonymous: true
logout: true
但是,如果我嘗試http://appdev.local/app_dev.php/admin/
收到此錯誤:
BaseNode.php行313中的InvalidConfigurationException:路徑“ security.firewalls.admin_area”的無效配置:登錄方式“ form_login”的check_path“ / login_check”與防火牆模式“ ^ / admin”不匹配。
為什么?
編輯2:如果FOSUserBundle和&HWIOAuth是否可以一起工作,該怎么辦?
作為其他信息,我從一開始就忘了告訴我,我已經並且需要安裝FOSUserBundle && HWIOAuth,並且我正試圖使兩者都能正常工作。 在這種情況下,這是我的routing.yml
樣子:
#HWIOAuthBundle
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login
salesforce_login:
pattern: /login/check-salesforce
#PDOne
pd_one:
resource: "@PDOneBundle/Controller/"
type: annotation
prefix: /
template:
resource: "@TemplateBundle/Controller/"
type: annotation
prefix: /
#FOSUserBundle
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
fos_user_security:
prefix: /admin
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
#SonataAdmin
admin:
resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
我應該如何處理FOSUserBundle和&HWIOAuth之間的前綴?
只是簡單
firewalls:
#this is the secured area accessed through web browser and only internals are allowed to login
admin_area:
pattern: ^/admin
anonymous: ~
#this is the public area accessed by/from iOs app and only users registered at Salesforce as rep can login
rep_area:
methods: [GET, POST]
pattern: ^/
anonymous: true
logout: true
這是一個正則表達式,告訴symfony所有以/
開頭的路由^
(開始)都遵循此規則。 或/admin
遵循另一個規則。 防火牆將始終遵循首先匹配的任何規則。 因此,您的管理員規則必須排在第一位,否則它將不起作用。
編輯
在添加FOS UserBundle安全路由的路由設置中,嘗試將/ admin附加為前綴。 可能是因為/ admin是您的規則,但為登錄生成的路由是host.com/login
而不是host.com/admin/login
fos_user_security:
prefix: /admin
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.