【问题标题】:Is it possible to use Rack::Session middleware with async_sinatra?是否可以将 Rack::Session 中间件与 async_sinatra 一起使用?
【发布时间】:2012-11-14 13:54:54
【问题描述】:

似乎不可能将Rack::Sessionasync_sinatraaroute 方法结合使用。我认为这是因为async_sinatra 在会话中间件有机会修改必要的标头之前引发了:async,但这似乎是一个常见问题。有没有办法在不重写会话中间件的情况下完成这项工作?我是否忽略了一些明显的东西?

require "sinatra/async"

class AsyncTest < Sinatra::Base
  register Sinatra::Async

  enable :sessions

  aget "/foo" do
    session[:message] = "Hello World!"
    body "foo: #{session[:message]}"
  end

  aget "/bar" do
    body "bar: #{session[:message]}"
  end

  run! if app_file == $0
end

访问/foo 会呈现“foo:Hello World!”正如预期的那样,但/bar 呈现“bar:”,引起全城的皱眉。该怎么办?这是不可能的吗?

【问题讨论】:

    标签: ruby session sinatra rack


    【解决方案1】:

    您必须在body 调用之前调用会话中间件:

    aget "/bar" do
      message = session[:message]
      body "bar: #{message}"
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2016-04-01
      • 2011-01-20
      • 2018-08-11
      相关资源
      最近更新 更多