【发布时间】:2014-05-21 13:14:54
【问题描述】:
考虑this 发布。我正在处理消息传递 API,但它不是 Twilio API。有问题的服务器没有明确支持存储 cookie,所以我想知道如何将会话状态/数据存储在内存、服务器或数据库中。
是不是像使用Rack::Session::Pool作为cookie方法一样简单?我找不到任何好的 tuts 或示例。
【问题讨论】:
标签: ruby api cookies sinatra rack
考虑this 发布。我正在处理消息传递 API,但它不是 Twilio API。有问题的服务器没有明确支持存储 cookie,所以我想知道如何将会话状态/数据存储在内存、服务器或数据库中。
是不是像使用Rack::Session::Pool作为cookie方法一样简单?我找不到任何好的 tuts 或示例。
【问题讨论】:
标签: ruby api cookies sinatra rack
我认为您将 cookie 和会话混淆了一点。
cookies
cookie,也称为 HTTP cookie、网络 cookie 或浏览器 cookie,是从网站发送并在用户浏览该网站时存储在用户的网络浏览器中的一小段数据。 source
这意味着客户端站点上有包含信息的小文本文件。这意味着以明文形式保存敏感内容可能不是最好的主意。您必须知道,如果它接受 cookie,它就在客户端手中。
在 sinatra 中它们是内置的,但命名为 session(我知道,有点混乱,这是因为 cookie 是客户端 Web 会话)
示例代码
require 'sinatra'
enable :sessions
get '/' do
session["value"] ||= "Hello world!"
"The cookie you've created contains the value: #{session["value"]}"
end
Sinatra Contrib 中有 Sinatra::Cookies。我不知道它为什么会存在,但值得一提。
会话
会话或显式服务器端 Web 会话是服务器站点上每个客户端的状态。
示例代码
require 'sinatra'
use Rack::Session::Pool
get '/' do
session["value"] ||= "Hello world!"
"The server side session you've created contains the value: #{session["value"]}"
end
结论和 TL;DR
如果不知道您到底想达到什么目标,就很难判断哪个更适合您。此外,甚至可以将两者结合起来并将状态保存到数据库中。因此,这取决于您尝试实现的目标。
【讨论】: