我在使用Rack::Session::Pool
存储会话信息的Sinatra时遇到问题。
我想要做的是通过使用'POST /dataset'
将信息附加到会话哈希来“发布”一些数据,然后使用'GET /dataset'
检索它并返回'session'哈希的内容。当我尝试返回值时,'session'哈希不包含:message key
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!
我知道这看起来微不足道,但我仍然无法让它发挥作用......
答案 0 :(得分: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
答案 1 :(得分:0)