Rack :: Session :: Cookie的使用是否有基本的例子?

时间:2013-08-20 03:52:04

标签: ruby passenger rack

我找不到使用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"

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

2 个答案:

答案 0 :(得分: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',。 BTW 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访问权限或/默认为“未设置”如果您通过?msg=someSTring,则应将msg设置为新值。
  • 访问/sess以查看会话中的内容。

您可以从How do I set/get session vars in a Rack app?

中获取一些提示

答案 1 :(得分:0)

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

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