4

使用 FOSUserBundle 和 Symfony2,

在我的站点中,根据登录用户的角色,我想让注销以交替重定向到两个不同的页面。

所以,我想做这样的事情:

{% if is_granted("ROLE_PREMIUM") %}
  <a href="{{ path('fos_user_security_logout_premium') }}">{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}</a>
{% else %}
  <a href="{{ path('fos_user_security_logout') }}">{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}</a>
{% endif %}

然后,不知何故,做这样的事情:

<route id="fos_user_security_logout" pattern="/logout">
    <default key="_controller">FOSUserBundle:Security:logout</default>
</route>
<route id="fos_seller_security_logout" pattern="/logoutPremium">
    <default key="_controller">FOSUserBundle:Security:logoutPremium</default>
</route>

但是,由于 all in logout 都是在 中完成的config.yml,所以将所有这些关于登录和注销的配置都放在了,我不知道如何配置第二个触发器并实现它。实际上,我唯一想做的就是根据角色将用户重定向到两个不同的页面。其余的都应该保持不变。

有什么可以放在这里的security.yml吗?

        logout:
          path:   /logout
          target: /main/user

非常感谢

4

1 回答 1

4

您可以将 a 添加CustomLogoutHandler到您的security.yml配置中。

firewalls:
    main: # - the name of your secure area
        logout:
            path:   /logout
            target: /
            success_handler: your_bundle.custom_logout_handler

例如,在哪里your_bundle.custom_logout_handler负责注销您的用户并根据类似的 _target_url 参数重定向他。

Symfony/Component/Security/Http/Logout

于 2012-08-28T08:54:37.180 回答