Play Framework Benutzerauthentifizierung / Mitgliedschaft

8

Ich möchte die Benutzerauthentifizierung in einer Play-Anwendung unterstützen. Es ist Web App und ich denke, dass das eingebaute "Secure" Modul zu einfach für meine Bedürfnisse ist. In der Tat diskutiert die Benutzergruppe, wie das Secure-Modul wirklich zu Demonstrationszwecken dient. Wie kann ich ein solches System entwickeln?

Im Wesentlichen ermöglicht es die Anwendung dem Benutzer sich anzumelden und dann werden sie ihre eigenen Einstellungen und so weiter in der gesamten Anwendung angewendet haben. Es gibt einige Seiten, auf die nicht authentifizierte Benutzer zugreifen können, aber wenn der Client authentifiziert wird, unterscheiden sich die Ansichten dieser Seiten. Ziemlich einfache Einrichtung, aber die meisten Dokumentationen beziehen sich nur auf das einfache Secure-Modul.

    
User987239700 27.02.2011, 18:17
quelle

4 Antworten

4

Wenn Ihre einzige spezielle Anforderung darin besteht, dass einige Seiten öffentlich sichtbar sind, habe ich Ihre Antwort: Spiel-Framework: Wie man Login für einige Aktionen erfordert, aber nicht alle . Ich habe gerade das Secure-Modul kopiert und ein paar kleine Ergänzungen hinzugefügt.

    
Brad Mace 02.03.2011 05:34
quelle
2

Sie können die PlayPlugins dafür verwenden. Ich fing an, ein Plugin zu schreiben, welches die Sicherheit auf mächtige Weise ermöglichte. Es ist eine Migration von BasisSecurity für Grails. Momentan finde ich keine Zeit für die weitere Entwicklung. Sie können den aktuellen Status hier sehen Ссылка .

    
niels 28.02.2011 09:03
quelle
2

Von Ihren Anforderungen scheint das aktuelle Authentifizierungsmodul ausreichend. Wenn nicht, was ich für mein Projekt getan habe, war:

  • Kopieren Sie die Klassen aus dem Modul (Secure Controller, Annotation, Tag) in Ihr Projekt
  • Erweitern Sie den Controller, indem Sie zusätzliche Funktionen hinzufügen

Ich habe meinen Code nicht zur Hand, um Beispiele hier zu platzieren, aber im Allgemeinen:

  • hat die Klassen umbenannt (also entschuldige, wenn ich sage, dass ein Name den anderen bedeutet, erinnere dich nicht an die ursprünglichen Namen!)
  • Methoden in Secure Controller hinzugefügt, um OpenId- und OAUth-Authentifizierung zu verarbeiten
  • hat in meinem Benutzermodell Support-Methoden hinzugefügt, die aufgrund der ID eines Dienstes (Google OpenId, Twitter-ID usw.) einen vorhandenen Benutzer aus der Datenbank mit dieser ID zurückgeben, oder, wenn dies nicht der Fall ist, einen neuen Benutzer erstellen und zurückgeben mit dieser ID verbunden.
  • hat der Benutzerklasse
  • einige Flags (wie admin, supervisor usw.) hinzugefügt
  • hat die Prüfmethode im Sicherheitscontroller geändert, so dass die Werte der Anmerkung mit den Flags des Benutzers überprüft werden. Etwas wie (Pseudocode)

    var ok: Boolescher Wert = false ok = ok || (annotation.value == "admin" & amp; & currentUser.isadmin) ok = ok || (annotation.value == "Supervisor" & amp; & currentUser.issupervisor) ...

  • hat die Annotation zu den entsprechenden Methoden hinzugefügt und den sicheren Controller (via @With) zu den Klassen hinzugefügt, die eine Zugriffskontrolle erfordern

Damit habe ich ein gesichertes System, und es scheint ganz gut zu funktionieren (Daumen drücken: P)

    
Pere Villega 28.02.2011 09:20
quelle
1

Ich weiß nicht, ob es Ihnen helfen könnte, aber schauen Sie sich das Riegelmodul an, um die Zugriffsrechte auf Ansichten / Controller zu verwalten ...
Ссылка

    
mandubian 28.02.2011 11:13
quelle

Tags und Links