2

请求之间不会保留会话,但我看不出我做错了什么。代码!

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
4

2 回答 2

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 会在 session 中间件之后设置光纤池,这不起作用。这不是错误,而是由Rack::FiberPool工作方式引起的。

于 2011-06-08T17:49:55.290 回答
0

事实证明,替换enable :sessionsuse Rack::Session::Cookie足以使其工作。

但为什么!?

于 2011-05-30T22:57:32.970 回答