【问题标题】:EncryptedCookie gem causes TypeError in Sinatra加密的 Cookie gem 导致 Sinatra 中的 TypeError
【发布时间】:2014-05-25 01:33:10
【问题描述】:

我正在尝试使我的 Sinatra 应用程序的会话更加安全,为此我想使用 EncryptedCookie gem。不幸的是,当我访问我的应用程序中的任何页面时,我都会收到此错误:

TypeError at /
no _dump_data is defined for class UnboundMethod
file: encrypted_cookie.rb location: dump line: 68

这是我的代码:

configure do
  use Rack::Session::EncryptedCookie,
   :key => 'myapp.session',
   :domain => 'myapp.com',
   :path => '/',
   :expire_after => 1200,
   :secret => 'bigcrazysecretstringhere'
end

我尝试在一个简单的 Sinatra 应用程序中使用与上面所示相同的设置来测试该 gem,它运行良好。我的应用程序中一定有其他设置干扰了该应用程序,但我无法弄清楚它可能是什么。有没有人遇到过类似的问题?

(我也尝试使用“thin start”、“rackup config.ru”和“ruby myapp.rb”来启动应用程序——这些都没有影响。)

【问题讨论】:

  • 在启用加密之前,您是否从站点中删除了任何旧的 cookie?也许它正在尝试解密明文并变得悲伤?
  • 您提供的代码看起来不错,唯一不同的是我将 use 语句放在我的应用程序的 Rack 部分(通常在 config.ru 中),因为它将在西纳特拉应用程序。既然提到了_dump_data,你有没有set this to false

标签: ruby session sinatra rack thin


【解决方案1】:

在我的头撞墙一个多星期后,我发现在我之前从事该项目的承包商已经放了

use Rack::Session::Pool

低于原版 200 行

use Rack::Session::Cookie

我删除了它,加密 Cookie 工作正常。经验教训:当你收到一个 500 行的 Sinatra 应用程序时,立即抽象出你所能做的一切。那么事情就瞒不住你了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多