【问题标题】:Symfony: Wrong firewall used when session expiresSymfony:会话过期时使用了错误的防火墙
【发布时间】:2014-07-26 06:53:52
【问题描述】:

我有一个使用 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 仅用于手动注销过程。

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

【问题讨论】:

    标签: php session symfony firewall


    【解决方案1】:

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

    【讨论】:

    • 原来就是这样。我今天早上早些时候交换了它们,看看它是否与订单有关。刚改回来再试一次,它仍然在发生。感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多