2013-03-14 8 views
6

Ich habe versucht RedBean ORM (http://redbeanphp.com) zu verwenden, um UserInterface und UserProviderInterface des Silex Security Provider Package zu implementieren.Silex/Symfony2 Remember Me Authentifizierung Benutzeroberfläche RedBean Wrapper

Aufgrund der Art, wie RedBean ORM Funktionen für seine Objekte behandelt, musste ich das Bean-Objekt in eine andere Klasse umbrechen.

Dies funktioniert hervorragend für die Authentifizierung, aber fehlschlägt Tests für Remember Me-Funktionalität.

Ich bemerkte, dass irgendwo entlang der Kette das Sicherheitspaket das Objekt serialisiert.

Ich dachte, vielleicht war dies der Grund für den Fehler, also habe ich Eigenschaften für "ID" und "Passwort" in meiner Wrapper-Klasse und verwendet __sleep und __wakeup Methoden, um die Bohne während des Schlafs zu ignorieren und neu laden beim Aufwachen. Obwohl während __wakeup alles scheinbar richtig geladen wird, ist der Test für die "Remember Me" -Funktion immer noch nicht erfolgreich.

Ich habe ein Github-Repository meines Codes erstellt. Wenn jemand irgendwelche Ideen hat, würde ich es sehr schätzen!

Aus irgendeinem Grund lassen sich RedBean, Silex und PHPUnit nicht in das Repository aufnehmen. Ein einfaches Composer-Update sollte sie für dich herunterziehen. Wenn jemand irgendwelche Ideen warum hat, würde ich auch eine Antwort darauf schätzen.

/setup.php:

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

Die entsprechenden Dateien

Um den Testbenutzer in der Datenbank zu erstellen sind:

Das Github-Repository finden Sie unter

den Test auszuführen:

/index.php

Meine Implementierung von Userinterface:

/src/App/Model/UserSecurityWrapper.php

Meine Implementierung von UserProviderInterface:

/src/App/Modell/UserProvider.php

Mein modifizierter Test:

/src/App/Test/RememberMeRedBeanServiceProviderTest.php

Die Original-Test:

/Verkäufer/silex/silex/Tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php

Antwort

3

Das Problem war mit meiner benutzerdefinierten UserProviders supportsClass-Methode.Ich habe Namespacing nicht berücksichtigt. Es scheint, dass diese Funktion nicht für die Standardauthentifizierung aufgerufen wird, aber für den Remember Me-Provider benötigt wird.

Verwandte Themen