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@H_502_3@ 
 

它仍然显示警告:

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.@H_502_3@ 
 

但它不会在生产中出现

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

解决方法

你正在使用两者
enable :sessions@H_502_3@ 
 

哪个makes Sinatra setup cookie based sessions,和

use Rack::Session::Cookie,...@H_502_3@ 
 

这也为您的应用程序添加了会话,因此您最终会在中间件堆栈中使用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'@H_502_3@ 
 

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

set :sessions,secret: '*&(^B234'@H_502_3@

猜你在找的Ruby相关文章