2013-01-19 7 views
5

Ich begann mit der Integration von SecureSocial in meine play/scala App, aber ich mag nicht wirklich alle Weiterleitungen zwischen den verschiedenen Ansichten.Verwenden von securesocial services ohne seine Ansichten zu verwenden

Beispiel - versuchen Sie, sich von der Standard-Login-Seite einzuloggen, und wenn Sie einen falschen Pass eingeben, werden Sie auf eine andere Seite (URL) umgeleitet, aber mit demselben Login-Formular. Das einzige, was anders ist, ist, dass es eine Fehlermeldung gibt ...

Ich möchte ein einfaches Login-Formular (Benutzer/Passwort-Anbieter) an der Ecke meiner Hauptseite, die ihre Daten mit Ajax übermittelt, diese Daten sind validiert Auf dem Server wird eine Antwort angezeigt, um entweder eine Fehlermeldung anzuzeigen oder die window.location zu ändern. Neben diesem Formular werde ich einen Link setzen, um zu einer fortgeschritteneren Login-Seite zu gelangen, die die Option hinzufügt, andere Provider wie fb/twitter etc zu verwenden. Aber von dieser Seite möchte ich auch Ajax verwenden, um die Details einzureichen und zu bekommen die Antwort.

Ich habe versucht, in die SecureSocial Quelle zu surfen, aber ein wenig verloren in dort.

Kann mir jemand eine Idee geben, wie man SecureSocial benutzt, aber ohne seine Ansichten zu benutzen?

Hinweis: Ich bin nicht daran interessiert, ihre Ansichten im Customizing, Es ist nicht nur ein CSS/Design-Problem, ich mag die Login-Daten Ajaxly und nicht mit dem normalen Form Vorlage von Umleitungen gefolgt zu handhaben ...

Antwort

2

Nach einige mehr in SecureSocial Code stöbern, ich habe ein besseres Verständnis davon, wie es funktioniert.

Sie können jeden der Anbieter, die Sie in der play.plugins-Datei aufgelistet haben, einzeln verwenden, um die Benutzerinformationen von Ihrem eigenen Login/Auth-Code zu authentifizieren. Stellen Sie nur sicher, dass Sie die richtigen Parameter senden, die der Anbieter benötigt.

Ich mochte die Art und Weise, wie die ProviderController-Klasse von SecureSocial dynamisch entschieden hat, welcher Provider basierend auf einem Parameter verwendet werden soll. Aber ich mochte nicht die Antworten, die es gemacht hat - Redirect .. Ich wollte auf eine Ajax-Anfrage mit einigen Daten antworten und ließ die Client-Seite js damit umgehen.

Dies ist meine Lösung:

ziemlich Kopie alle ProviderController Code zu meiner eigenen Auth.scala-Datei (ein Controller). Die Redirects für "case ex, case _" wurden geändert, die Weiterleitung wurde bei erfolgreicher Authentifizierung beibehalten, da der SecureSocial-Sitzungsschlüssel für den Benutzer hinzugefügt wurde. Alle SecureSocial-bezogenen Routen aus meiner Routes-Datei entfernt. Fügen Sie ein zusätzliches verstecktes Feld mit dem Login-Typ (userpass/google/fb/etc ...) hinzu und konfigurieren Sie meinen Login-Ajax-Post, um diesen zusammen mit dem Post an meinen Auth-Controller zu senden.

Wenn Sie weitere Informationen benötigen, kommentieren Sie hier und ich werde die Antwort bearbeiten.

+0

Ich bin interessiert ... im Grunde, weil ich den Login-Bildschirm in einem Popup anzeigen, und wenn der Benutzer sich anmeldet oder abbricht möchte ich nicht die Seite neu laden (und die Eingaben des Benutzers verlieren) ... Ich möchte nur das Popup schließen und den Login-Status bei Bedarf aktualisieren. Ich denke, ich brauche einen Ajax-Login, um dies zu erreichen. – Ixx

+0

Sorry für den etwas späten Kommentar. Yeah, du brauchst Ajax und sichere soziale Arbeit mit seitenweisen Anfragen und Weiterleitungen ... irgendwann habe ich aufgehört, es zu benutzen und habe ein paar auth-Klassen erstellt, die vom auth20-Modul inspiriert sind. Es ist nicht zu kompliziert und ist so flexibel :) – samz

+0

Ich habe genau das gleiche Problem. Ich möchte alle HTML-Vorlagen aus meiner Play-Anwendung entfernen (einschließlich benutzerdefinierter SecureSocial-Vorlagen) und sie durch JSON/JavaScript ersetzen. Ich habe ein bisschen die SecureSocial-Quellen überarbeitet ...Aber da ich nur einen Benutzernamen/Passwort-Provider brauche, ist es meiner Meinung nach eine eigene Lösung wert. Könnten Sie mir ein paar Tipps geben, wie Sie das Problem gelöst haben? Gibt es ein gutes Tutorial oder Beispiel, das mir beim Schreiben einer anständigen Auth API helfen könnte? Vielen Dank. – j3d

Verwandte Themen