Rack::Session::Pool与Sinatra的配合

10
我有一个使用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中。

1个回答

13

只需将enable :sessions这一行替换为use Rack::Session::Pool

enable :sessions的作用仅是将Rack::Session::Cookie添加到堆栈中(而这正是您想要避免的)。session助手仍将起作用。


Rack::Session::Cookie 提供了简单的基于 Cookie 的会话管理。 - Liber
1
@Liber OP 需要一种不同类型的会话,而不是 Rack::Session::Cookie 提供的那种,因此 Konstantin Hasse 的回答是正确的。 - Redoman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接