Sto usando Apache Shiro nella mia webapp.Shiro ripristina la sessione dopo 2 minuti
Memorizzo alcuni parametri nella sessione, in particolare la chiave primaria di un oggetto memorizzato nel database.
Quando l'utente esegue il login, carico l'oggetto dal database e salva la chiave primaria nella sessione. Quindi all'interno dell'app l'utente può modificare i dati dell'oggetto e premere un pulsante Annulla o Salva.
Entrambi i pulsanti attivano un RPC che ottiene i dati aggiornati sul server. L'oggetto viene quindi aggiornato nel database utilizzando la chiave primaria memorizzata nella sessione.
Se l'utente rimane attivo nell'app (effettuando alcuni RPC), tutto funziona correttamente. Ma se rimane inattivo per 3 minuti e successivamente fa un RPC, Shiro's securityUtils.getSubject().getSession()
restituisce null.
Il timeout della sessione è impostato su 1.200.000 ms (20 min), quindi non penso che questo sia il problema.
Quando vado attraverso le sessioni memorizzate nella cache del mio gestore di sessione riesco a vedere la sessione dell'utente org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c
ma quando provo ad ottenere l'ID di sessione dal cookie e di chiamare SecurityUtils.getSecurityManager().getSession(key)
per ottenere la sessione (dove chiave è una Implementazione di SessionKey): ottengo un'eccezione.
Quando provo a creare un nuovo oggetto dall'ID di sessione, perdo tutti gli attributi salvati nella sessione.
Sono felice di pubblicare del codice per risolvere il problema, ma ho provato così tanti soluzioni alternative che non so da dove iniziare ... Quindi fatemi sapere cosa vi serve.
In alternativa, se qualcuno conosce un quadro migliore di quanto documentato Shiro Sono tutto orecchi (mancanza di documentazione di Shiro rende veramente troppo tempo)
Quindi quale era la correzione? Questo non è ovvio dalla tua risposta, poiché non hai spiegato cosa hai cambiato o pubblicato la configurazione originale. – frhd