2013-05-18 6 views
6

Stavo usando SecureSocial 2.0.7 e avevo implementato un UserServicePlugin, e gli utenti potevano accedere. Potrei fermare e riavviare il server (o ricompilare o qualsiasi altra cosa) e gli utenti rimarranno connessi.Aggiornamento a SecureSocial 2.0.12 e ora le sessioni non vengono mantenute

Dall'aggiornamento alla 2.0.12, la sessione di accesso non è persistente tra i riavvii del server.

Ho aggiunto la registrazione di debug a tutti i metodi in UserServicePlugin. L'utente è saved all'accesso. Tuttavia, al riavvio del server, e tento di accedere a una pagina come un utente precedentemente loggati, ho solo vedere nei registri:

[info] play - database [default] connected at jdbc:postgresql://localhost/xxxxxx 
[info] application - [securesocial] loaded templates plugin: sec.SecureSocialViews 
[info] play - Starting application default Akka system. 
[info] application - [securesocial] loaded user service: class sec.LoginUserService 
[info] application - [securesocial] loaded password hasher bcrypt 
[info] application - [securesocial] loaded identity provider: userpass 
[info] play - Application started (Dev) 
[debug] application - [securesocial] calling deleteExpiredTokens() 
[debug] application - deleteExpiredTokens 
[debug] application - [securesocial] anonymous user trying to access : '/supplier/requests' 

Tutte le idee? Mi chiedo se per qualche motivo il cookie di accesso viene messo a nudo prima ancora di arrivare a verificare una sessione di accesso esistente ...

Sto usando l'autenticazione nome utente/password.

+0

Potrebbe essere qualcosa a che fare con SecureSocial memorizzare le cose nella cache di gioco? (Sto solo utilizzando la cache di riproduzione predefinita, in memoria.) – andrewf

+2

Lo trovo anche su Play 2.1 e sul ramo principale Securesocial. Ho un servizio per gli utenti con DB e ho configurato ehcache per persistere su disco. Tuttavia, quando si riavvia il server, tutti gli utenti vengono disconnessi. Frustrante. –

risposta

4

C'è stato un cambiamento nel modo in cui le informazioni dell'utente sono memorizzate nella sessione. Invece di usare il cookie di sessione di gioco, il modulo ora ne usa uno separato. Questo cookie ha un id di autenticazione. Le informazioni dell'utente sono ora memorizzate in un'implementazione AuthenticatorStore sul lato server. L'implementazione predefinita utilizza la cache di riproduzione, ecco perché è necessario eseguire nuovamente l'autenticazione durante la ricompilazione. I dati nella cache vengono cancellati.

Se si desidera mantenere gli utenti registrati dopo la ricompilazione/riavviare è possibile:

  1. Creare un'implementazione di AuthenticatorStore che persiste cose.
  2. Modificare il file ehcache.xml per persistere nel filesystem (diskPersistent = "true").
+0

Ho aggiornato il mio file ehcache.xml ma questo non funziona –

+0

Hai copiato il file ehcache.xml nella tua directory app/conf? – Jorge

+0

sì, il file è in app/conf –

Problemi correlati