【问题标题】:Tracking "conversation" flow in Sinatra在 Sinatra 中跟踪“对话”流
【发布时间】:2014-05-21 13:14:54
【问题描述】:

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

是不是像使用Rack::Session::Pool作为cookie方法一样简单?我找不到任何好的 tuts 或示例。

【问题讨论】:

    标签: ruby api cookies sinatra rack


    【解决方案1】:

    我认为您将 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

    如果不知道您到底想达到什么目标,就很难判断哪个更适合您。此外,甚至可以将两者结合起来并将状态保存到数据库中。因此,这取决于您尝试实现的目标。

    【讨论】:

    • 感谢您的详细评论。我想我把它们混在一起了。基本上只是尝试做与 Twilio 博客文章中相同的事情,但使用不明确接受 cookie 来存储会话状态的服务器,因此我需要将会话状态存储在我身边以跟踪对话流。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多