1

我在使用 SinatraRack::Session::Pool存储会话信息时遇到问题。我想要做的是通过使用将信息附加到会话哈希来“发布”一些数据'POST /dataset',然后通过使用'GET /dataset'并返回“会话”哈希的内容来检索它。但是,当我尝试返回该值时,“会话”哈希不包含 :message 键

require 'sinatra/base'

class Trial < Sinatra::Base
  use Rack::Session::Pool

  post '/dataset' do
    session[:message] = params[:data]
  end

  get '/dataset' do
    session[:message]
  end

end

Trial.run!

我知道这看起来微不足道,但我仍然无法让它工作......

4

2 回答 2

2

即使您使用Rack::Session::Pool而不是默认的基于 cookie 的会话存储,您仍然需要在请求中使用 cookie。会话数据存储在服务器的内存中,但会话 id 需要在 cookie 中随每个请求一起传递。

response1 = RestClient.post 'localhost:4567/dataset', {:data => '123'}

response2 = RestClient.get 'localhost:4567/dataset', :cookies => response1.cookies

puts response2 #=> 123
于 2013-09-05T20:33:29.693 回答
0

尝试

enable :sessions

有关配置的更多信息。

于 2013-09-03T15:00:56.553 回答