【发布时间】:2025-12-10 22:55:01
【问题描述】:
我在理解如何让 Sinatra 缓存会话时遇到了一些麻烦。当我启动多个应用程序实例(ala Puma 或多个 Thins)时,就会出现此问题。
我要求 Sinatra (1.4) 使用这样的会话:
enable :sessions
set :session_secret, 'secret sauce'
set :protection, except: :session_hijacking
$connections = []
set connections: $connections
我将$connections 留在那里以证明此应用正在使用服务器发送的事件,以防万一。
我是他们使用 Persona (Mozilla) 来支持登录/身份验证,并最终将登录的电子邮件存储在 Sinatra 的会话中:
session[:auth_email] = data["email"]
data 是 Persona 给我的。
我无法解决的问题是我如何让 Sinatra 将会话数据存储在持久性存储(理想情况下是 Redis)中,这样应用程序就可以在不丢失会话状态的情况下被回收(我已经这样做了Ramaze 之前是 Ramaze::Cache.options.session = Ramaze::Cache::Redis.using())
【问题讨论】: