I am working on a Sinatra Project and have set some variables in the session for later usage.
The scenario for which I need help for is that I want to access the session object in a middleware class. I am using warden for authentication.
I want to do something similar below in the Middleware class:
class MyMiddleware
def initialize(app, options={})
@app = app
end
def call(env)
puts "#{session.inspect}"
end
end
Is there a possibility for doing that?
Thoughts?
You can't use Sinatra's
sessionmethod in Rack middleware, but you can access the session directly through theenvhash.Make sure the session middleware is before your middleware (so in Sinatra
enable :sessionsshould be beforeuse MyMiddleware), then the session is available through the key'rack.session':You might prefer to use a
Rack::Requestobject to make it easier to access the session and other parts of theenvhash: