Per quanto riguarda la sicurezza programmatica di Servlet 3.0, quando una sessione va in timeout non è possibile richiamare HttpServletRequest#logout()
.Come gestire il timeout della sessione quando si utilizza la sicurezza programmatica Servlet 3.0
L'utente rimane connesso a JAAS?
In tal caso, qual è la procedura migliore per gestire la disconnessione da JAAS dopo il timeout della sessione?
In che modo il contenitore gestisce la successiva richiesta dell'utente di accedere nuovamente e creare una nuova sessione dopo il timeout della sessione?
Per inciso, quali sono i pro ei contro di utilizzare i seguenti tre approcci per gestire timeout della sessione quando si usa Servlet 3.0 Programmatico sulla Sicurezza:
HttpSessionListener#sessionDestroyed()
- Fai il
@ManagedBean @SessionScoped LoginManager
attrezzoHttpSessionBindingListener
e fare qualcosa invalueUnbound
. - Annota un metodo in LoginManager con @PreDestroy.
Qualsiasi altro approccio suggerito/consiglio sulle migliori pratiche sarebbe sicuramente apprezzato.
"Core Java Server Faces" p. 525 indica "Attualmente non ci sono specifiche per la disconnessione o per la commutazione di identità quando si utilizza la sicurezza gestita dal contenitore." –
Mi sono imbattuto in un paio di sproloqui su sicurezza J2EE, lamentando che una sessione invalidata è un povero sostituto per il logout formale, ma i blog erano più vecchi, scritti prima di Servlet 3.0, che fornisce un modo per disconnettersi programmaticamente. –
Ovviamente la tua edizione CJSF è precedente a Servlet 3.0. – EJP