会话不会在请求之间保留,但我看不出我做错了什么。代码!
require 'sinatra'
require 'rack/fiber_pool'
class SessionTest < Sinatra::Base
use Rack::FiberPool
enable :sessions
set :session_secret, "foobar"
get '/' do
body { session.inspect } #This is always '{}'!
end
get '/a' do
session['user'] = "bob"
redirect '/'
end
end
run SessionTest.new
答案 0 :(得分:1)
请改为尝试:
require 'sinatra'
require 'rack/fiber_pool'
class SessionTest < Sinatra::Base
enable :sessions
set :session_secret, "foobar"
get '/' do
body { session.inspect } #This is always '{}'!
end
get '/a' do
session['user'] = "bob"
redirect '/'
end
end
use Rack::FiberPool
run SessionTest.new
否则Sinatra将在会话中间件之后设置光纤池,但这不起作用。这不是一个错误,而是由Rack::FiberPool
的工作方式引起的。
答案 1 :(得分:0)
使用enable :sessions
替换use Rack::Session::Cookie
足以使其正常运行。
但为什么!?