Symfony 2,我可以在前端和后端之间共享登录吗?

时间:2015-08-10 07:56:18

标签: symfony

我正在尝试在前端和后端之间共享用户的会话。例如,如果您访问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。

1 个答案:

答案 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