Rack-Session-Cookie und Sinatra - Einstellung und den Zugriff auf Daten
War ich mit Rack-Sitzung Pool, aber meine Nutzer erhalten würde, traten aus einem webserver-thread auf einen anderen, wodurch die session-Daten ablaufen. Ich begann zu spielen, um mit nur enable :sessions im Sinatra, jedoch bin ich nicht in der Lage zu verwenden, denn ich habe mehrere apps mit Sinatra (gleiche Taste, es erscheint zu sein verwenden - nicht sicher, ob dies ist, weil Ihr die gleichen host oder nicht)
So, da meine apps brechen würde jede andere, die ich jetzt versuche Rack-Session-Cookie und die Einstellung der Variablen (das gleiche wie enable :sessions, aber Sie können die Variablen)
Großartig, so funktioniert das! Aber jetzt habe ich keinen Zugriff auf die session-Daten, so wie ich es benutze, in Rack-Session Pool und in enable: sessions
session[:user] = nick
puts session[:user]
du auf die Idee...
Frage ist, warum kann ich auf die session-Daten mit session[:user] in Pool und Sinatra enable :sessions, aber nicht in Rack-Session-Cookie? Bin ich etwas fehlt? Alles was ich mache, ist unten
config.ru
use Rack::Session::Cookie, :key => 'key',
:domain => "localhost",
:path => '/',
:expire_after => 14400, # In seconds
:secret => 'secret'
EDIT:
Habe einige weitere Tests und fand, dass es eigentlich, dass es in die session-variable, jedoch sobald es sich um eine neue Methode oder Umleitung der session-variable angezeigt wird, gelöscht werden (ist das cookie wirklich größer als 4KBs?!) - es kann nicht sein, weil enable :sessions klappt wunderbar
- Nur dump-Anfrage.cookies für jede Anfrage und finden Sie, wenn Sie etwas verdächtiges.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist was ich getan habe um dieses problem zu beheben:
Sehen Sie den Unterschied von den oben genannten? - Keine Domäne, wenn ich lassen Rack::Session::Cookie geben Sie die Domäne oder den browser (wer das tut es), ich habe keine Fehler zwischen mehreren Sinatra/Rack-apps...
session
hashbefore do; p session ; end
zeigt nur{"session_id"=>"b59..."}
.Problem mit der domain "localhost". Dieser thread beschreibt in mehr details, warum haben Sie "localhost" als Domäne nicht funktionieren würde: Cookies auf localhost mit expliziten domain
Einem Update wäre die Einrichtung einer domain in der hosts-Datei wie
Dann stellen Sie Ihre domain in Ihren Sitzungen Einstellungen zu superduper.dev. Dann während der Entwicklung können Sie gehen, um was auch immer Anschluss, die Sie benötigen. Ex. superduper.dev:5000