Symfony 多个防火墙(管理员和用户)
我的应用程序需要2个防火墙,一个用于管理员,另一个用于用户。在my security.yml I config中:Symfony 多个防火墙(管理员和用户),symfony,Symfony,我的应用程序需要2个防火墙,一个用于管理员,另一个用于用户。在my security.yml I config中: admin: pattern: ^/admin provider: fos_userbundle form_login: login_path: /admin/login use_forward: false check_p
admin:
pattern: ^/admin
provider: fos_userbundle
form_login:
login_path: /admin/login
use_forward: false
check_path: /admin/login_check
failure_path: null
default_target_path: /admin/dashboard
always_use_default_target_path: true
logout:
path: /admin/logout
target: /admin
anonymous: ~
# defaut login area for standard users
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout:
path: /logout
anonymous: ~
我不知道这个配置是否正确。当我从main区域登录时一切正常,但当我从admin登录时,它会将我重定向到主路径,而不是默认的目标路径。我尝试将提供程序更改为自定义提供程序(例如在内存中)以重新检查管理防火墙,但我仍然从fos\u userbundle提供程序按用户登录。你能帮我吗?尝试删除匿名,改用访问控制。理论上,Symfony2将自动将用户从管理员重定向回管理员,即使他们使用相同的登录屏幕 Symfony2中的安全性是级联的(so/admin也将出现在main下) e、 g。 #为标准用户定义登录区域 主要内容: 模式:^/ 表格(u)登入: 提供商:fos_用户包 csrf\u提供程序:form.csrf\u提供程序 注销: 路径:/logout
admin:
pattern: ^/admin
provider: fos_userbundle
form_login:
use_forward: false
failure_path: null
target: /admin/dashboard
always_use_default_target_path: true
logout:
target: /admin
access_control:
- { path: ^/, roles: [IS_AUTHENTICATED_ANONYMOUSLY, ROLE_USER] }
- { path: ^/admin, roles: [ROLE_ADMIN] }
您可能需要指定不同的角色。我认为这是因为有一个主模式 主要内容: 模式:^/ 它甚至可以控制^/admin
尝试将^/替换为^/home或^/main,这两种模式都可以使用我将主防火墙模式更改为^/(?!admin),现在一切正常。谢谢你的帮助
main:
pattern: ^/(?!admin)
provider: default_provider
anonymous: ~
admin:
pattern: ^/admin
provider: admin_provider
anonymous: ~
非常感谢。我尝试更改我的配置作为您的指南,但当我转到page/admin时,它会将我重定向到主防火墙中的/login页面。我需要2个登录页面,用于2个防火墙,其中有2个独立的提供程序。your security.yml列出了相同的提供程序(fos_userbundle)。请尝试,只需“target:/admin/dashboard”