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

Dis*_*nty 6 ruby rack passenger

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

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

这是我得到的:

 use Rack::Session::Cookie, :key => 'rack.session',
                               :domain => 'foo.com',
                               :path => '/',
                               :expire_after => 2592000,
                               :secret => 'change_me'
Run Code Online (Sandbox Code Playgroud)

然后设置/检索:

env['rack.session'][:msg]="Hello Rack"
Run Code Online (Sandbox Code Playgroud)

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

ch4*_*d4n 2

您已经在问题中设置了 cookie。我不确定你所说的“设置”是否还有其他含义。

相反,env['rack.session']您可以使用session[KEY]它来简化。

session[:key] = "vaue" # will set the value
session[:key] # will return the value
Run Code Online (Sandbox Code Playgroud)

简单的西纳特拉示例

require 'sinatra'
set :sessions, true
get '/' do
    session[:key_set] = "set"
    "Hello"
end
get "/sess" do
    session[:key_set]
end
Run Code Online (Sandbox Code Playgroud)

更新

我相信它不适合你,因为你设置了无效的域名。所以我不得不把它去掉: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
Run Code Online (Sandbox Code Playgroud)
  • 设置会话值msg访问根目录或/默认为“未设置”,如果您通过?msg=someSTring它,则应使用新值设置消息。
  • 访问/sess以检查会话中的内容。

您可以从如何在 Rack 应用程序中设置/获取会话变量中获取一些提示?