ruby - 是否有 Rack::Session::Cookie 用法的基本示例?

标签 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"

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

最佳答案

您已经在问题中设置了 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/

相关文章:

ruby-on-rails - #<UsersController :0x007fda4c2c5208> 的未定义方法 `user_url'

mysql - Rake 任务太慢

ruby - 在 Rails 中测试大量外部 API

ruby - sinatra config.ru : what is the configure block for?

ruby-on-rails - 乘客独立重启应用程序在更新到 5.0.18 后无法正常工作

node.js - 通过 DreamHost 上的 Passenger 的普通 Node.js - 权限被拒绝

ruby-on-rails - 重新加载rails中间件而不重新启动开发中的服务器

javascript - 无法获取输入字段 JS 的值

ruby-on-rails - 类似于共享点但内置在 Rails 上的 ruby ?

ruby-on-rails-3 - rails 3 rack 中间件问题,未定义方法 `each'