哪个有道理。但是对于这个问题,有哪些首选的工作方法呢?
答案 0 :(得分:24)
在我的评论中,我建议使用rack cookie based sessions,但仔细研究一下,无论如何,Sinatra会话都是机架cookie会话。
进一步展望,我found this in the Sinatra docs:
为了提高安全性,cookie中的会话数据使用会话密钥进行签名。 Sinatra为您生成一个随机秘密。但是,由于这个秘密会随着应用程序的每次启动而改变,您可能希望自己设置秘密,因此所有应用程序实例都共享它:
set :session_secret, 'super secret'
所以似乎每个Heroku dyno都会生成一个不同的密钥,因此无法读取每个其他会话cookie,并且您需要指定一个密钥,以便每个dyno使用相同的密钥。
您可能最好设置environment variable,而不是在源代码中添加密钥:
$ heroku config:add SESSION_KEY=a_longish_secret_key
然后在你的sinatra应用程序中:
enable :sessions
set :session_secret, ENV['SESSION_KEY']
答案 1 :(得分:0)
# In your app.rb file just add following -
enable :sessions
set :session_secret, "some_random_value"