【问题标题】:Are there any basic examples of Rack::Session::Cookie usage?有没有 Rack::Session::Cookie 使用的基本示例?
【发布时间】:2013-08-22 00:14:41
【问题描述】:

我找不到任何使用Rack::Session::Cookie 的简单示例,并且希望能够将信息存储在cookie 中,并在以后的请求中访问它并使其过期。

这些是我能找到的唯一例子:

这是我得到的:

 use Rack::Session::Cookie, :key => 'rack.session',
                               :domain => 'foo.com',
                               :path => '/',
                               :expire_after => 2592000,
                               :secret => 'change_me'

然后设置/检索:

env['rack.session'][:msg]="Hello Rack"

我找不到任何其他设置指南或示例。有人可以帮忙吗?

【问题讨论】:

    标签: ruby passenger rack


    【解决方案1】:

    您已经在问题中设置了 cookie。我不确定您是否通过“设置”表示其他意思。

    您可以使用session[KEY] 代替env['rack.session'] 进行简化。

    session[:key] = "vaue" # will set the value
    session[:key] # will return the value
    

    简单的 Sinatra 示例

    require 'sinatra'
    set :sessions, true
    get '/' do
        session[:key_set] = "set"
        "Hello"
    end
    get "/sess" do
        session[:key_set]
    end
    

    更新

    我认为它对您不起作用,因为您设置了无效域。所以我不得不把它去掉:domain => 'foo.com',。顺便说一句,Sinatra 包装了 Rack cookie 并公开了 session 助手。所以上面的代码对我来说很好。我相信下面的代码应该能按预期工作。

    require 'sinatra'
    use Rack::Session::Cookie, :key => 'rack.session',
      :expire_after => 2592000,
      :secret => 'change_me'
    get '/' do
      msg = params["msg"] || "not set"
      env["rack.session"][:msg] = msg
      "Hello"
    end
    get "/sess" do
      request.session["msg"]
    end
    
    • 设置会话值msg 访问root 或/ 默认为“未设置”,如果您通过?msg=someSTring,它应该使用新值设置msg。
    • 访问 /sess 以查看会话中的内容。

    你可以从How do I set/get session vars in a Rack app?那里得到一些启示

    【讨论】:

    • 我发现的问题是,如果我重新启动 Web 服务,会话已失效,并且设置的会话未保存在 cookie 中。所以如果你点击'/',重启sinatra,然后点击/sess,你不会返回任何信息。
    • 请注意,上面的代码是针对 Sinatra 的,它与您发布的代码 sn-p 略有不同,但基本上它在 AFAIK 内部包装了 Rack Cookie。我没有直接在 Rack 上工作,所以我不得不花一些时间来解决这个问题。请参阅上面的更新答案。
    • 我认为你应该澄清env["rack.session"][:msg]request.session["msg"]之间的区别。
    【解决方案2】:

    检查下面的示例。它可能会给你一个好主意

    http://chneukirchen.org/repos/rack/lib/rack/session/cookie.rb

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2011-05-14
      • 2017-07-13
      • 1970-01-01
      • 2010-12-07
      • 2021-11-18
      相关资源
      最近更新 更多