ruby – 在Sinatra Middleware中访问会话

ruby – 在Sinatra Middleware中访问会话,第1张

概述我正在研究Sinatra项目,并在会话中设置了一些变量供以后使用. 我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用warden进行身份验证. 我想在Middleware类中做类似的事情: class MyMiddleware def initialize(app, options={}) @app = app end def call(env) 我正在研究Sinatra项目,并在会话中设置了一些变量供以后使用.

我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用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中访问会话所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1286687.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存