2015-03-18 32 views
9

Ho creato un'applicazione 1.2.2.RELEASE SpringBoot MVC/Sicurezza e le mie application.properties contiene impostazioni del server comeSpringboot timeout di sessione app

#Tomcat port and contextPath details 
server.port=8080 
server.contextPath=/test 
#server.session-timeout=120 
server.sessionTimeout=120 

I documentation stati

server.session-timeout= # session timeout in seconds 

ma il ServerProperties.java usa sessionTimeout;

Se si guarda il codice application.properties che ho posto, ho provato sia in modo indipendente che insieme, ma non ho avuto il timeout dopo 2 minuti, non ho nessun altro codice scritto esplicitamente per eseguire sessione di handeling.

Qualcuno ha riscontrato questo problema? Cosa mi sto perdendo o sto sbagliando?

+5

Boot [rilegatura vincolante] (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-relaxed-binding) significa che entrambi i server. sessionTimeout' e 'server.session-timeout' configureranno la proprietà' ServerProperies' 'sessionTimeout'. Si noti che l'unità è secondi, non minuti. –

+0

@Andy, grazie per le informazioni, ma questo non spiega ancora perché non ho un timeout, anche se imposto il valore su 120 sec (2 minuti) – victor

+0

Ecco perché è un commento piuttosto che una risposta –

risposta

9

Non so per qualche motivo solo l'impostazione

server.session.timeout=120 

non ha funzionato per me però, quando ho impostato sia timeout di sessione e cookie di età max come di seguito:

server.session.cookie.max-age=120 
server.session.timeout=120 

esso funziona perfettamente

+0

funziona perché il browser invalida il cookie e non lo invia al server, quindi il server non riesce a trovare la sessione – JohnnyAW

+0

In questo modo, il cookie viene invalidato, indipendentemente dall'attività, pertanto, potresti essere disconnesso mentre sei compilando un modulo, e al momento dell'invio, verrai reindirizzato. –

+0

Non funziona per me. – sinoTrinity

1

Non sono sicuro del significato di questo server.session.timeout perché quando si imposta un numero specifico e si monitora la creazione della sessione, la scadenza della sessione non viene modificata.

Sto utilizzando la sessione primaverile e l'integrazione redis, nel mio caso, ho bisogno di impostare il maxInactiveIntervalInSeconds come 120 (secondi), questo può essere fatto attraverso redisHttpSessionConfiguration.

E poi se vado a redis per cercare la sessione, posso vedere che la scadenza è cambiata a 120 secondi e il timeout della sessione funziona.

Un mio suggerimento potrebbe essere quello di provare a configurare se è possibile configurare maxInactiveIntervalInSeconds (o simile) della sessione a livello di programmazione o nel file delle proprietà e monitorare le modifiche di sessione.

Problemi correlati