2013-05-18 12 views
6

Używałem SecureSocial 2.0.7, i zaimplementowałem UserServicePlugin, a użytkownicy mogą się logować. Mogę zatrzymać i zrestartować serwer (lub rekompilować lub cokolwiek innego), a użytkownicy pozostaną zalogowani.Uaktualniono do SecureSocial 2.0.12, a teraz sesje nie są zachowywane.

Od aktualizacji do wersji 2.0.12 sesja logowania nie jest trwała po ponownym uruchomieniu serwera.

Dodałem rejestrowanie debugowania do każdej metody w UserServicePlugin. Użytkownik jest przy logowaniu saved. Jednak po ponownym uruchomieniu serwera, i próbować uzyskać dostęp do strony jako poprzednio zalogowanego użytkownika, po prostu zobaczyć w dziennikach:

[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' 

pomysłów? Zastanawiam się, czy z jakiegoś powodu plik cookie logowania jest nukowany, zanim nawet dojdzie do sprawdzenia istniejącej sesji logowania ...

Używam uwierzytelniania nazwy użytkownika/hasła.

+0

Czy może to mieć coś wspólnego z przechowywaniem rzeczy SecureSocial w Play Cache? (Używam tylko domyślnej, wbudowanej pamięci podręcznej Play). – andrewf

+2

Znalazłem to również w Play 2.1 i Master branch Securesocial. Mam usługę użytkownika opartą na DB i skonfigurowałem ehcache do utrzymywania na dysku. Jednak po ponownym uruchomieniu serwera wszyscy użytkownicy są wylogowani. Denerwujący. –

Odpowiedz

4

Nastąpiła zmiana w sposobie zapisywania informacji o użytkowniku w sesji. Zamiast używania pliku cookie sesji Play moduł używa teraz oddzielnego. Ten plik cookie ma identyfikator uwierzytelniający. Informacje o użytkowniku są teraz przechowywane w implementacji AuthenticatorStore po stronie serwera. Domyślna implementacja wykorzystuje pamięć podręczną odtwarzania, dlatego należy ponownie uwierzytelnić przy ponownym kompilowaniu. Dane w pamięci podręcznej są usuwane.

Jeśli chcesz zachować użytkownicy po zalogowaniu rekompilacji/restart można:

  1. Załóż realizację AuthenticatorStore który utrzymuje rzeczy.
  2. Zmień plik ehcache.xml na trwający w systemie plików (diskPersistent = "true").
+0

Zaktualizowałem mój plik ehcache.xml, ale to nie działa –

+0

Czy skopiowałeś plik ehcache.xml do katalogu app/conf? – Jorge

+0

Tak, zrobiłem, plik jest w aplikacji/conf –

Powiązane problemy