我正在尝试在前端和后端之间共享用户的会话。例如,如果您访问domain.com/login并且您成功登录,则应该能够访问domain.com/admin/(如果您有足够的权限),而无需新登录。另一种方法是,如果您访问domain.com/admin/login并成功登录,当您转到domain.com/时,您应该已经识别,而无需新的登录操作。
所以,问题是,我如何共享同一域的登录?
我的security.yml:
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
admin:
pattern: /admin(.*)
form_login:
provider: fos_userbundle
login_path: admin_login
check_path: admin_login_check
default_target_path: admin_home
logout:
path: admin_logout
target: admin_login
anonymous: true
security: true
context: application
remember_me:
key: XXXXXXXXXXXX
lifetime: 86400
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
security: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
我的config.yml
session:
handler_id: ~
cookie_path: /
name: __XXXXXXX
PD:我正在使用FOSUserBundle。
答案 0 :(得分:4)
将context
设置为"应用程序"在main
防火墙上应该有效(documentation)。 E.g。
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
security: true
context: application