我有 2个防火墙(一个用于管理面板,一个用于注册用户)和 2个内存提供商(一个用于管理员,一个用于注册用户)用于我的Symfony2应用程序 - 太动态了吧?
现在,我尝试访问注册用户的路线,Boom!我按预期显示了一个BasicAuth对话框。
接下来,当我尝试访问 admin 的路由时,我再次看到了另一个BasicAuth对话框 - 正如预期的那样。
然而,当我导航回任何注册用户'路由,我再次看到BasicAuth对话框,我得出结论,每当我被要求提供我的凭据时,防火墙的验证对话框与我正在导航的路由匹配,我就会自动从其他防火墙注销。
这是我的security.yml
文件。
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
providers:
walang_forever:
memory:
users:
user:
password: test
roles: 'ROLE_USER'
nailad_forever:
memory:
users:
admin:
password: test
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_gugma:
pattern: ^/admin
http_basic:
provider: nailad_forever
main_gugma:
pattern: ^/user
http_basic:
provider: walang_forever
encoders:
Symfony\Component\Security\Core\User\User: plaintext
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/user, roles: ROLE_USER }
我想要的只是每个防火墙登录一次。
有类似的经历吗?或者提出解决方案?
答案 0 :(得分:1)
在两个注销防火墙设置上使用invalidate_session:false:
logout:
path: mylogoutpath
target: MyBundle_homepage
invalidate_session: false
invalidate_session:false可以解决问题。 请参阅:https://codedump.io/share/OfziwjHXBHbB