Я использовал Rack Session Pool, однако мои пользователи могли перенаправлять один поток веб-сервера на другой, что приводило к истечению срока действия данных сеанса. Я начал играть с помощью только enable: sessions в Sinatra, однако я не могу использовать это, потому что у меня есть несколько приложений, использующих Sinatra (похоже, тот же ключ, который он, похоже, использует - не уверен, потому что это тот же хост или нет)
Итак, поскольку мои приложения могут сломать друг друга, я сейчас пробую Rack Session Cookie и устанавливаю переменные (то же самое, что и enable: sessions, но вы можете установить переменные)
Отлично, это работает! Но теперь я не могу получить доступ к данным сеанса так, как я их использовал, в Rack Session Pool и в enable: sessions
session[:user] = nick
puts session[:user]
, вы поняли ...
Вопрос в том, почему я могу получить доступ к данным сеанса с помощью session [: user ] в Pool и Sinatra enable: sessions, но не в Rack Session Cookie? Я что-нибудь упускаю? Все, что я делаю, находится ниже
config.ru
use Rack::Session::Cookie, :key => 'key',
:domain => "localhost",
:path => '/',
:expire_after => 14400, # In seconds
:secret => 'secret'
РЕДАКТИРОВАТЬ:
Провел еще несколько тестов и обнаружил, что « s фактически помещает его в переменную сеанса, однако, как только он переходит к новому методу или перенаправлению, переменная сеанса, кажется, отбрасывается (действительно ли этот файл cookie больше 4 КБ ?!) - этого не может быть, потому что enable: sessions работает просто отлично