我想使用一个带有两个防火墙的symfony2应用程序:一个用于前端的数据库用户,另一个用于后端的内存用户。
我已经阅读了所有的文档和各种堆叠溢出的问题,但我无法解决我的问题。
到目前为止,这是我的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身份验证loginform。
有人能看看我的配置并找出我在这里做错了什么吗?
我非常感谢你的帮助:)
发布于 2014-10-31 00:01:47
防火墙在第一次匹配的基础上进行匹配。限制最少的模式应该在防火墙列表中限制更多的模式之后出现。目前,您的frontend
模式正在匹配所有内容,因此您的backend
模式永远不会被检查。
正如伊戈尔·潘托维奇所建议的:
试着逆转防火墙顺序,将后端放在前端
https://stackoverflow.com/questions/26660203
复制相似问题