gpt4 book ai didi

ruby - 在 Sinatra 中间件中访问 session

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:12 26 4
gpt4 key购买 nike

我正在开发一个 Sinatra 项目,并在 session 中设置了一些变量供以后使用。

我需要帮助的场景是我想访问中间件类中的 session 对象。我正在使用 warden 进行身份验证。

我想在中间件类中做类似的事情:

class MyMiddleware
def initialize(app, options={})
@app = app
end

def call(env)
puts "#{session.inspect}"
end
end

有没有可能这样做?

想法?

最佳答案

在Rack中间件中不能使用Sinatra的session方法,但是可以直接通过env hash访问session。

确保 session 中间件在你的中间件之前(所以在 Sinatra 中 enable :sessions 应该在 use MyMiddleware 之前),然后 session 可以通过键 '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对象,以便更轻松地访问 session 和 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 中间件中访问 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com