我找不到任何使用 Rack::Session::Cookie
的简单示例,并且希望能够将信息存储在 cookie 中,并在以后的请求中访问它并让它过期.
这些是我能找到的唯一示例:
- How do I set/get session vars in a Rack app?
- http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html
这是我得到的:
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'foo.com',
:path => '/',
:expire_after => 2592000,
:secret => 'change_me'
然后设置/检索:
env['rack.session'][:msg]="Hello Rack"
我找不到有关此设置的任何其他指南或示例。有人可以帮忙吗?
最佳答案
您已经在问题中设置了 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
- set session value
msg
access root or/
默认为 'not set' 如果你传递?msg=someSTring
它应该设置 msg 与新值(value)。 - 访问
/sess
以检查 session 中的内容。
您可以从 How do I set/get session vars in a Rack app? 中获取一些线索
关于ruby - 是否有 Rack::Session::Cookie 用法的基本示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326681/