Symfony:会话过期时使用的防火墙错误

时间:2014-06-05 10:17:57

标签: php session symfony firewall

我有一个使用FOSUserBundle的Symfony应用程序(不确定这是否与防火墙有关)。它有2个防火墙,都适用于站点的不同部分。一个是前端,另一个是管理区域。

我遇到的问题是,当用户登录到前端并且会话到期后(如果他们没有选择记住登录),他们会被重定向到管理防火墙注销目标

这是我的安全文件中的防火墙配置:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROLE_CLIENT:          ROLE_USER
    ROLE_ACCOUNT_MANAGER: ROLE_CLIENT
    ROLE_DESIGNER:        ROLE_USER
    ROLE_PUBLISHER:       ROLE_DESIGNER
    ROLE_ADMIN:           [ROLE_PUBLISHER, ROLE_ACCOUNT_MANAGER]
    ROLE_SUPER_ADMIN:     [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email

firewalls:
    site:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            always_use_default_target_path: true
            default_target_path: site_survey_launch
            login_path: site_login
            check_path: site_login_check
            use_referer: true
            success_handler: xd_authentication.event.listener
        logout:
            path: site_logout
            target: site_login
            success_handler: xd_authentication.event.listener
        anonymous: true
    portal:
        pattern: ^/portal
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            always_use_default_target_path: true
            default_target_path: portal_user_surveys_live
            login_path: portal_login
            check_path: portal_login_check
        logout:
            path: portal_logout
            target: portal_login
        anonymous: true
        context: shared
acl:
    connection: default

站点注销配置的success_handler处理程序返回site_login的重定向响应。更有理由对这个问题相当困惑。除非success_handler仅用于手动注销过程。

对此的任何帮助将不胜感激。我现在一直想弄清楚几个月来发生了什么。

1 个答案:

答案 0 :(得分:0)

我认为防火墙定义的顺序很重要,因为site具有模式^/,我认为它处理来自^/portal网址的请求。您应该在portal防火墙之前定义site防火墙。