La mia raccomandazione: mai.
Dovresti avere un solo token CSRF per sessione. Se la sessione scade, il token CSRF scade a questo punto.
Poiché non è possibile per un utente malintenzionato leggere il token CSRF (almeno non c'è il rischio che un utente malintenzionato legga un token CSRF come cookie Session ID), non è necessario generarne uno nuovo a meno che avere una nuova sessione per andare con esso.
L'unica eccezione a ciò che vedo è che se si tenta di inviare un modulo con un cookie di sessione utente valido, ma con un token CSRF errato (ad esempio, l'utente viene attaccato da un altro sito che sta utilizzando). In questo caso potresti voler generare un nuovo token CSRF e segnalare un avviso a te stesso in modo che le richieste possano essere esaminate. È possibile che si desideri generare l'avviso dopo il primo token CSRF non corretto (poiché le richieste contenenti un token CSRF errato non dovrebbero accadere affatto), ma è possibile aggiornare il token dopo n tentativi falliti per ridurre le possibilità di un token che viene forzato come bruto mentre consente all'utente di utilizzare il proprio sistema senza che gli venga negato il servizio (sebbene la negazione del servizio sia un problema minore in questo caso in quanto l'attacco arriverà dalla propria macchina).