Warnung: einige davon können sehr falsch sein, also lassen Sie mich bitte wissen, wenn meine Annahmen falsch sind.Rails mit ActiveRecord Sessions und Restful-Authentifizierung: Wann wird in die Sessions-Tabelle geschrieben?
Hier ist, was ich versuche zu erreichen:
ich für die Anmeldung geruhsame-Authentifizierung bin mit. Da ich jedoch flex/ruby_amf für meine Benutzeroberfläche verwende, muss ich jede Verbindung separat von flex authentifizieren.
Die Art, wie ich mich dafür entschieden habe, war, den Login-Bildschirm auf die eingebettete Flash-Seite umzuleiten und die Session-ID als Flashvar einzufügen. Die Flash-App sendet die Sitzungs-ID bei jeder Anfrage, und ein Vorher-Filter auf allen relevanten Controllern prüft, ob der Benutzer, der der von der Sitzungs-ID identifizierten Sitzung zugeordnet ist, angemeldet ist.
Die Art, wie ich einen Benutzer mit Sitzung assoziiere, besteht darin, eine Spalte 'user_id' zur Sitzungstabelle hinzuzufügen und eine sql- "update sessions set user_id ... '" - Abfrage auszuführen, die von der Login-Funktion aufgerufen wird.
Die user_id wird jedoch erst beim zweiten Einloggen des Benutzers aktualisiert. Eine kleine Untersuchung zeigte, dass der Datensatz in der Sitzungstabelle während der Ausführung der Anmeldefunktion noch nicht existiert.
Also, wenn alles bis zu diesem Punkt macht Sinn und entspricht den besten Praktiken usw., dann ist meine Frage:
Zu welchem Zeitpunkt ist der Datensatz in der Sessions-Tabelle erstellt? Gibt es eine Möglichkeit, das Session-Objekt in der Login-Funktion zu aktualisieren und Rails die user_id für mich in die Datenbank schreiben zu lassen?
Das Verhalten von Sitzungen in Schienen ist ein echtes Rätsel für mich. Ich würde mich über jede Hilfe freuen.
Vielen Dank.
PS: Ich fand eine Diskussion über die Aktualisierung der Sitzungstabelle hier: http://www.nabble.com/Rails-2.3-Sessions-td22720164.html – krispyfi
OK, ich habe das Problem ein wenig mehr erforscht, und ich denke, dass eine der falschen Annahmen, die ich getroffen habe, ist, dass das Sitzungsobjekt einer Zeile in der Sitzungstabelle entspricht. Ich hatte gehofft, dass ich Session [: user_id] = Users.authenticate (name, pass) machen und dann eine session.save machen könnte, um sie in die DB zu schreiben. In Wirklichkeit (korrigieren Sie mich, wenn ich falsch liege!), Erscheint das Sitzungsobjekt in codierter Form als die Datenspalte. Hier ist ein weiterer Link, der sagt, dass das, was ich tue, grundsätzlich korrekt ist: http://scottiestech.info/2009/04/02/rails-23-how-to-access-custom-columns-in-the- Sitzungstisch / – krispyfi