6

我找不到任何简单的使用示例,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"

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

4

2 回答 2

2

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

而不是env['rack.session']您可以session[KEY]用于简化。

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 并公开了sessionhelper。所以上面的代码对我来说很好。我相信以下代码应该按预期工作。

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? 中获得一些提示?

于 2013-08-20T06:59:55.460 回答
0

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

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

于 2013-08-20T08:52:30.050 回答