2012-11-01 16 views
5

Sto usando securesocial funziona bene ma ora ogni volta che cambio qualche codice di scala devo effettuare nuovamente il login. C'è la possibilità di fingere un utente nella sessione quando è in modalità sviluppo, quindi non devo effettuare il login così spesso?falso collegamento di sicurezza durante lo sviluppo

Grazie,

Joris Wijlens

+0

Strano ... Stai cancellando i cookie da qualche parte (in 'Global.onStop()' o da qualche altra parte)? –

+0

Non che io sappia. Quindi questo non è il comportamento predefinito? –

+0

Il problema è andato via dopo il passaggio a un'implementazione del database per il servizio utenti –

risposta

-2

Ciò avviene perché in DEV modalità Play riavvia l'applicazione quando si modifica il codice. Pertanto, i dati nel servizio utente di esempio vengono persi.

12

SecureSocial per impostazione predefinita utilizza la cache di riproduzione predefinita per l'archiviazione degli autenticatori (che corrispondono ai cookie all'utente connesso). La cache di riproduzione predefinita è EHCache ed è configurata utilizzando il file ehcache.xml che puoi trovare nei barattoli. La configurazione predefinita è strettamente in memoria, il che significa che quando l'app si riavvia, perde tutti i valori. Fortunatamente, è piuttosto semplice sovrascrivere la configurazione di EHCache per scrivere sul disco.

Copia il file ehcache.xml nella directory di configurazione. Aggiungi <diskStore path="java.io.tmpdir"/> e cambiare diskPersistent a true

Quindi il mio aspetto:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> 
<diskStore path="java.io.tmpdir"/> 
<defaultCache 
     maxElementsInMemory="10000" 
     eternal="false" 
     timeToIdleSeconds="120" 
     timeToLiveSeconds="120" 
     overflowToDisk="false" 
     maxElementsOnDisk="10000000" 
     diskPersistent="true" 
     diskExpiryThreadIntervalSeconds="120" 
     memoryStoreEvictionPolicy="LRU" 
     /> 
</ehcache> 

Se siete interessati imparare come configurare il resto, v'è una certa documentazione nel file EHCache-failsafe.xml questo è anche nei barattoli di gioco.

+1

Grazie, molto, molto utile soluzione! – kabochkov

+1

Per Play 2.2, ho trovato il file ehcache-default.xml in play/framework/src/play-cache/src/main/resources /. L'ho rinominato in ehcache.xml e l'ho inserito nella directory conf del mio progetto. Ho appena impostato diskPersistent su true e ha funzionato. Non sono sicuro se la parte sia necessaria. – Raymond26

Problemi correlati