在FOSUserBundle中,如何创建备用注销

时间:2012-08-12 09:28:57

标签: php security symfony fosuserbundle

使用FOSUserBundle和Symfony2,

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

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

{% 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>

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

security.yml中的任何内容?

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

非常感谢

1 个答案:

答案 0 :(得分:4)

您可以在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