Sinatra czyści sesję na poczcie

enable :sessions
set :session_secret, 'secret'

post '/login' do
        session[:loggedInUser] = jsondata['username'].to_s
        puts session[:loggedInUser] + " is the session"
end

Wszystko jest w tym momencie dobre. Kiedy czytam sesję w ten sposób:

get '/debug' do
    session.inspect
end

Wszystko tam jest. Ale tu pojawia się problem. Kiedy później wybiorę się na kolejną prośbę o wpis:

post '/foo' do
    # do nothing
end

Sesja zostanie wyczyszczona.

Czemu? Czy to błąd?

EDYTOWAĆ

Zawęziłem problem: I proxypass Sinatra przez nginx, dohttp://app.local/backend - wtedy pojawia się problem. Jeśli przepuszczę Sinatręhttp://localhost:4567 wszystko działa zgodnie z oczekiwaniami.

ROZWIĄZANIE

Posługiwać sięRack::Session::Cookie zamiast domyślnegoenable :sessions:

use Rack::Session::Cookie, :key => "rack.session",
:path => "/backend"
# etc

zSinatra FAQ:

Jeśli musisz ustawić dodatkowe parametry dla sesji, takich jak data ważności, użyj bezpośrednio Rack :: Session :: Cookie zamiast enable: session:

questionAnswers(4)

yourAnswerToTheQuestion