在 Rack 中间件中不能使用 Sinatra 的session
方法,但是可以通过env
hash 直接访问 session。
确保 session 中间件在你的中间件之前(所以在 Sinatra 中enable :sessions
应该在 before use MyMiddleware
),然后 session 可以通过 key 获得'rack.session'
:
class MyMiddleware
def initialize(app, options={})
@app = app
end
def call(env)
puts env['rack.session'].inspect
@app.call(env)
end
end
您可能更喜欢使用Rack::Request
对象来更轻松地访问会话和env
哈希的其他部分:
def call(env)
request = Rack::Request.new(env)
puts request.session.inspect
# other uses of request without needing to know what keys of env you need
@app.call(env)
end