跟踪Sinatra的“对话”流程

时间:2014-05-21 13:14:54

标签: ruby api cookies sinatra rack

考虑this帖子。我正在处理消息传递API,但它不是Twilio API。有问题的服务器没有明确支持存储cookie,因此我想知道如何将会话状态/数据以某种方式存储在内存,服务器或数据库中。

是否像使用Rack::Session::Pool作为cookie方法一样简单?我无法找到任何好的结果或例子。

1 个答案:

答案 0 :(得分:4)

我认为你混淆了cookie和会话。

<强>饼干

Cookie,也称为HTTP Cookie,网络Cookie或浏览器Cookie,是用户浏览该网站时从网站发送并存储在用户的网络浏览器中的一小段数据。 source

这意味着客户端站点上有小文本文件,其中包含信息。这意味着以明文形式保存敏感内容可能不是最好的主意。你必须意识到,如果它接受cookie,它就在客户手中。

在sinatra中,它们是内置的但命名为session(我知道,有点令人困惑,这是因为cookie是客户端网络会话)

示例代码

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

结论&amp; TL; DR

如果不知道你究竟想要达到什么目标,很难说哪种方法对你有用。此外,甚至可以将两者结合起来并将状态保存到数据库中。所以它取决于你试图实现的目标。