Generate new CSRF token without reloading the entire form

后端 未结 4 2136
误落风尘
误落风尘 2020-12-01 06:55

If a user gets logged out (due to session expiration or for other reasons) in the background while using my Symfony2 application, I have implemented a JS layer appearing on

4条回答
  •  悲&欢浪女
    2020-12-01 07:15

    Assuming that you use default CSRF Provider, in your AJAX controller you can get your CSRF Provider service and "ask" it to regenerate token:

    Symfony 2.3 (and prior)

    /** @var \Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider $csrf */
    $csrf = $this->get('form.csrf_provider');
    $token = $csrf->generateCsrfToken($intention); 
    
    return new Response($token);
    

    Symfony 2.4

    /** @var \Symfony\Component\Security\Csrf\CsrfTokenManagerInterface $csrf */
    $csrf = $this->get('security.csrf.token_manager');
    $token = $csrf->refreshToken($intention);
    
    return new Response($token);
    

提交回复
热议问题