[英]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.