Подтвердить что ты не робот

В приложении Sinatra на Heroku сеанс не разделяется через динамики

Это имеет смысл. Но какова предпочтительная работа вокруг этой проблемы?

4b9b3361

Ответ 1

В моем комментарии я предложил использовать сеансы cookie на основе cookie, но в этом случае сеансы Sinatra - это сеансы cookie в стойке.

В дальнейшем я нашел это в документах Sinatra:

Чтобы повысить безопасность, данные сеанса в файле cookie подписываются секретом сеанса. Sinatra генерирует случайный секрет. Однако, поскольку этот секрет будет изменяться с каждым началом вашего приложения, вы можете захотеть установить секрет самостоятельно, поэтому все экземпляры вашего приложения используют его:

set :session_secret, 'super secret'

Итак, кажется, что каждый динамик Heroku генерирует другой ключ и поэтому не может читать файлы cookie сеансов друг друга, и вам нужно указать ключ, чтобы каждый динод использовал один и тот же.

Вместо того, чтобы добавлять секретный ключ к исходному коду, вы, вероятно, лучше настраиваете переменную среды :

$ heroku config:add SESSION_KEY=a_longish_secret_key

Затем в вашем приложении sinatra:

enable :sessions
set :session_secret, ENV['SESSION_KEY']

Ответ 2

Вы также можете использовать сеанс memcached для повышения производительности или безопасности. Не пробовал, но выглядел легко. 5MB бесплатно на герою.

Ответ 3

# In your app.rb file just add following - 
enable :sessions
set :session_secret, "some_random_value"