ruby – 在Sinatra Middleware中访问会话
发布时间:2020-12-17 02:53:47 所属栏目:百科 来源:网络整理
导读:我正在研究Sinatra项目,并在会话中设置了一些变量供以后使用. 我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用warden进行身份验证. 我想在Middleware类中做类似的事情: class MyMiddleware def initialize(app,options={}) @app = app end def
我正在研究Sinatra项目,并在会话中设置了一些变量供以后使用.
我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用warden进行身份验证. 我想在Middleware类中做类似的事情: class MyMiddleware def initialize(app,options={}) @app = app end def call(env) puts "#{session.inspect}" end end 这样做有可能吗? 思考? 解决方法
您不能在Rack中间件中使用Sinatra的会话方法,但您可以通过env哈希直接访问会话.
确保会话中间件位于中间件之前(因此在Sinatra中启用:会话应在使用MyMiddleware之前),然后通过密钥“rack.session”提供会话: class MyMiddleware def initialize(app,options={}) @app = app end def call(env) puts env['rack.session'].inspect @app.call(env) end end 您可能更喜欢使用 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |