Credo che il problema comune quando si usa @SessionAttributes
è dopo aver nulla la sessione corrente, Spring MVC allegare il modello attribuisce di nuovo nel nuova sessione - causando quindi l'impressione che non invalida
È possibile verificare il valore di JSESSIONID prima di & dopo averlo invalidato. Si otterrà un nuovo JSESSIONID, eppure precedenti attributi modello sono attaccati direttamente nella nuova sessione
mi sono trovato a dover fare questo per cancellare un attributo di modello di nome "contatore" dalla sessione dopo invalidarla
@RequestMapping(value="/invalidate", method=RequestMethod.POST)
public String invalidate(HttpSession session, Model model) {
session.invalidate();
if(model.containsAttribute("counter")) model.asMap().remove("counter");
return "redirect:/counter";
}
Se avete gli attributi di abbondanza, naturalmente si può provare a pulire tutto fuori usando
model.asMap().clear();
Ma a mio parere migliore approccio è quello di invalidare utilizzando un controller diverso che non ha @SessionAttribute
su di esso. Quindi qualunque modello attribuisca gli altri controller non sarà collegato direttamente alla nuova sessione. Es .:
@Controller
@RequestMapping("/logout")
public class LogoutController {
@RequestMapping(method=RequestMethod.POST)
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/login";
}
}
Che tipo di errore si ottiene? Si prega di inviare uno stacktrace – Jk1