2016-05-23 105 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