2013-03-14 12 views
6

Próbowałem użyć RedBean ORM (http://redbeanphp.com) do implementacji UserInterface i UserProviderInterface pakietu Silex Security Provider.Silex/Symfony2 Remember Me Authentication Interfejs użytkownika RedBean Wrapper

Ze względu na sposób, w jaki ORM RedBean obsługuje funkcje dla swoich obiektów, musiałem zawinąć obiekt bean w innej klasie.

Działa to znakomicie do uwierzytelniania, ale kończy się niepowodzeniem w przypadku funkcji Remember Me.

Zauważyłem, że gdzieś w łańcuchu Security Package serializuje obiekt.

Pomyślałem, że być może to był powód błędu, więc utworzyłem właściwości "id" i "hasło" w mojej klasie opakowania i użyłem metod __sleep i __wakeup, aby zignorować komponent bean podczas snu i ponownie go załadować po przebudzeniu. Pomimo tego, że wszystko wydaje się ładować poprawnie podczas __wakeup, test funkcji "Remember Me" nadal nie działa.

Utworzyłem repozytorium github mojego kodu. Jeśli ktoś ma jakieś pomysły, byłbym bardzo wdzięczny!

Z jakiegoś powodu RedBean, Silex i PHPUnit nie pozwalają się włączyć do repozytorium. Prosta aktualizacja dla kompozytora powinna je dla ciebie wyciągnąć. Jeśli ktokolwiek ma jakieś pomysły, to ja również powinienem odpowiedzieć na to pytanie.

repozytorium GitHub można znaleźć na stronie:

https://github.com/christianmagill/silex-redbean-security

Odpowiednie pliki są

Aby utworzyć użytkownika testowego w bazie danych:

dopiszesz /setup.php

Aby uruchomić test:

/index.php

Moja implementacja userinterface:

/src/App/Model/UserSecurityWrapper.php

Moja implementacja UserProviderInterface:

/src/App/Model/UserProvider.php

Mój zmodyfikowany test:

/src/App/Test/RememberMeRedBeanServiceProviderTest.php

Oryginalny Test:

/sprzedawca/SILEX/SILEX/tests/Silex/Testy/Dostawca/RememberMeServiceProviderTest.php

Odpowiedz

3

Problem był związany z moją niestandardową metodą SupportClass UserProvider.Nie brałem pod uwagę przestrzeni nazw. Wygląda na to, że ta funkcja nie jest wymagana do podstawowego uwierzytelniania, ale jest potrzebna dla dostawcy usługi remember me.