使用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
非常感谢
答案 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参数重定向他。