Rails CSRF Token Authentizität und Devise

8

Ich habe Probleme mit dem Authentizitätstoken der Schienen und Devise login / logout.

Ich benutze backbone js, um eine einzelne Seite App zu erstellen, also benutze ich Ajax, um den Benutzer einzuloggen / ausloggen. Hier ist, was ich beobachte und ich verstehe nicht genau, warum das passiert.

Ich habe csrf_meta_tags in meinem Layout. Die Seite lädt, ich klicke auf einen Login-Button, fülle ein Formular aus und sende es ab, ich bin erfolgreich eingeloggt. Ich kann Dinge tun, die ein angemeldeter Benutzer tun können sollte.

Nun klicke ich auf eine Abmeldeschaltfläche, die eine DELETE-Anfrage über Ajax sendet und erfolgreich abgemeldet wurde.

Der ganze obige Prozess ist auf einer einzigen Seite, keine Seite lädt neu, es ist alles Ajax.

Wenn ich jetzt erneut auf login klicke und das Formular ausfülle, sendet es die Ajax-Anfrage, meldet mich an, zeigt aber eine Warnung an der Serverkonsole.

%Vor%

Nun, warum hat mich das (Anmelden) angemeldet, in erster Linie, wenn es (Rails) die Authentizität des CSRF-Tokens nicht überprüfen konnte.

und jetzt, wenn ich versuche, Dinge zu tun, die ein angemeldeter Benutzer in der Lage sein sollte, es zu tun, scheitert das Posten eines Formulars mit einer Fehlermeldung von devise

%Vor%

und eine Warnung auf der Serverkonsole

%Vor%

und an dieser Stelle bin ich ausgeloggt. Wenn ich die Seite selbst aktualisiere, kann ich sehen, dass ich nicht mehr angemeldet bin.

Was ist los?

Verfällt mein erstes Authentizitätstoken, nachdem ich mich das erste Mal ausgeloggt habe?

Ich verwende

%Vor%

Vielen Dank im Voraus:)

    
Abid 31.07.2012, 09:56
quelle

1 Antwort

1

Sie müssen authenticity_token variable mit all Ihren Ajax-Anfragen senden. Sie können es aus dem Meta-Tag der Seite einfügen.

    
Alex Shkolnikov 31.07.2012 11:20
quelle