Синатра очищает сессию на посту
enable :sessions
set :session_secret, 'secret'
post '/login' do
session[:loggedInUser] = jsondata['username'].to_s
puts session[:loggedInUser] + " is the session"
end
На данный момент все хорошо. Когда я читаю сессию так:
get '/debug' do
session.inspect
end
Это все там. Но тут возникает проблема. Когда я перейду к другому почтовому запросу позже:
post '/foo' do
# do nothing
end
Сеанс очищается.
Почему? Это ошибка?
РЕДАКТИРОВАТЬ
Я сузил проблему: я перехожу через Sinatra через nginx, чтобыhttp://app.local/backend
- это когда проблема возникает. Если я прогоню Синатру черезhttp://localhost:4567
все работает как положено.
РЕШЕНИЕ
использованиеRack::Session::Cookie
вместо по умолчаниюenable :sessions
:
use Rack::Session::Cookie, :key => "rack.session",
:path => "/backend"
# etc
изСинатра FAQ:
Если вам нужно установить дополнительные параметры для сессий, такие как дата окончания срока действия, используйте Rack :: Session :: Cookie напрямую вместо enable: session: