
我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用warden进行身份验证.
我想在MIDdleware类中做类似的事情:
class MyMIDdleware def initialize(app,options={}) @app = app end def call(env) puts "#{session.inspect}" endend 这样做有可能吗?
思考?
解决方法 您不能在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) endend 您可能更喜欢使用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总结
以上是内存溢出为你收集整理的ruby – 在Sinatra Middleware中访问会话全部内容,希望文章能够帮你解决ruby – 在Sinatra Middleware中访问会话所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)