ruby – Sinatra / 1.4.3使用Rack :: Session :: Cookie警告

前端之家收集整理的这篇文章主要介绍了ruby – Sinatra / 1.4.3使用Rack :: Session :: Cookie警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的配置代码
require 'sinatra'

#set :environment,:production
enable :sessions
enable :logging
set run: true

case
  when production?
    set port: 8081
  when development?
    require 'sinatra/reloader'
    require 'better_errors'
    use BetterErrors::Middleware
    BetterErrors.application_root = __dir__
end

use Rack::Session::Cookie,key: 'N&wedhSDF',domain: "localhost",path: '/',expire_after: 14400,secret: '*&(^B234'

get '/' do
  erb :hello
end

它仍然显示警告:

SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
This poses a security threat. It is strongly recommended that you
provide a secret to prevent exploits that may be possible from crafted
cookies. This will not be supported in future versions of Rack,and
future versions will even invalidate your existing user cookies.

但它不会在生产中出现

问题是,即使Rack :: Session :: Cookie已经设置,为什么它仍然显示警告?

解决方法

你正在使用两者
enable :sessions

哪个makes Sinatra setup cookie based sessions,和

use Rack::Session::Cookie,...

这也为您的应用程序添加了会话,因此您最终会在中间件堆栈中使用Rack :: Session :: Cookie的两个实例.

Sinatra包含的会话中间件正在产生警告.默认情况下,Sinatra doesn’t create a session secret when running in the development environment(至少在经典模式下,它适用于模块化应用),因此Rack在开发过程中会产生警告.

您只需要启用会话的两种方式之一,共同使用两种方法可能会导致它们以意想不到的方式进行交互.

为了避免警告,您可以使用session_secret选项为Sinatra会话显式设置一个秘密:

enable :sessions
set :session_secret,'*&(^B234'

启用会话时,您还可以将选项哈希作为参数传递.而不是启用:会话,请执行以下操作:

set :sessions,secret: '*&(^B234'
原文链接:https://www.f2er.com/ruby/272436.html

猜你在找的Ruby相关文章