【问题标题】:Rack::Session::Pool with SinatraRack::Session::Pool 与 Sinatra
【发布时间】:2011-03-21 08:46:29
【问题描述】:

我有一个使用 enable :sessions 构建的 Sinatra Web 应用程序,我在其中使用 session[:mything] 访问我的会话数据。

我现在想在服务器端存储数据(即使用基于数据库的会话),但我不知道如何使用 Rack::Session::Pool,这似乎是我需要使用的东西。

如何转换我的 web 应用以与 Pool 一起使用?

我知道我需要添加一行

use Rack::Session::Pool

接下来会发生什么? ——提前致谢!

编辑:这是一个使用基于 cookie 的会话的示例:

require 'rubygems'
require 'sinatra'

enable :sessions

get '/' do
  session.merge!(params)
  session.inspect
end

访问/?hi=there,然后访问/,您仍然会看到{'hi'=>'there'},因为它已存储在cookie 中。

【问题讨论】:

    标签: ruby session sinatra rack


    【解决方案1】:

    只需将行 enable :sessions 替换为 use Rack::Session::Poolenable :session 所做的只是将 Rack::Session::Cookie 添加到堆栈中(您想避免这种情况)。 session 助手仍然可以工作。

    【讨论】:

    • Rack::Session::Cookie 提供简单的基于 cookie 的会话管理。
    • @Liber OP 需要另一种会话,而不是 Rack::Session::Cookie 提供的会话,因此 Konstantin Hasse 给出了答案。
    猜你喜欢
    • 2013-10-12
    • 2010-10-31
    • 2016-03-06
    • 2013-09-06
    • 2012-11-14
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多