Sinatra cancela sessão no post
enable :sessions
set :session_secret, 'secret'
post '/login' do
session[:loggedInUser] = jsondata['username'].to_s
puts session[:loggedInUser] + " is the session"
end
Tudo está bem neste momento. Quando eu li a sessão assim:
get '/debug' do
session.inspect
end
Está tudo lá. Mas aqui vem o problema. Quando eu vou para outra solicitação de postagem mais tarde:
post '/foo' do
# do nothing
end
A sessão está desmarcada.
Por quê? Isso é um inseto?
EDITAR
Eu reduzi o problema: eu proxypassar o Sinatra através do nginx, parahttp://app.local/backend
- isso é quando o problema ocorre. Se eu corro Sinatra atravéshttp://localhost:4567
tudo funciona como esperado.
SOLUÇÃO
UsarRack::Session::Cookie
em vez do padrãoenable :sessions
:
use Rack::Session::Cookie, :key => "rack.session",
:path => "/backend"
# etc
deSinatra FAQ:
Se você precisar definir parâmetros adicionais para sessões, como data de expiração, use Rack :: Session :: Cookie diretamente em vez de ativar: sessions: