2016-05-23 134 views
1

我已在security.yml注销成功处理程序:Symfony使用LogoutSuccessHandler添加闪光灯消息不起作用

security: 
    firewalls: 
     secured_area: 
      logout: 
       invalidate_session: true 
       success_handler: acme.security.logout_success_handler 

我在services.yml设置服务:

acme.security.logout_success_handler: 
     class: ACME\FooBundle\Security\Handler\LogoutSuccessHandler 

和落实在LogoutSuccessHandler代码.PHP

class LogoutSuccessHandler implements LogoutSuccessHandlerInterface 
{ 
    public function onLogoutSuccess(Request $request) 
    { 
     $request->getSession()->getFlashBag()->add('info', 'you have been logged out successfully'); 

     return new RedirectResponse('/'); 
    } 
} 

现在,如果我有任何提示信息,我从树枝打印:

{% for flashType, flashMessages in app.session.flashbag.all() %} 
    {% for flashMessage in flashMessages %} 
    <div class="flash-message-{{ flashType }}">{{ flashMessage|raw }}</div> 
    {% endfor %} 
{% endfor %} 

但没有消息打印。我认为在注销成功处理程序被调用并且Flash消息丢失后,会话被重新生成。

回答

1

您需要设置invalidate_session: false而不是invalidate_session: true,这样会话不会失效。见Symfony documentation