Я успешно устранил проблему, когда члены сессии не были доступны, даже если они были установлены, и хотели бы знать, почему это происходит. Мое положение может быть описано как:Участники сеанса Sinatra «исчезают»
- Приложение Sinatra с использованием
:session
. - Использование oAuth для авторизации пользователей и в процессе установки члена сеанса
:ret_url
, чтобы приложение узнало, куда вернуться после авторизации. - Сервер единорог на стек Cedar (Heroku)
Это прекрасно работает, пока работает локально, но член :ret_url
сессия была полностью исчезающего из сессии на Heroku. Я обнаружил, что если я удалил этот код он зафиксировал проблему:
before do
cache_control :public, :must_revalidate, :max_age => 60
end
Вопрос 1: Я предполагаю, что мой печенье был кэшируются без значения :ret_url
, и именно поэтому он ломится?
Вопрос 2: Я устанавливал член сеанса, как показано в приведенном ниже коде правила маршрута, является ли это неправильным местом для этого?
# redirect users to login if necessary
set(:auth) do |access_token|
condition do
if request.request_method == 'GET'
session[:ret_url] = request.path_info
end
redirect '/' unless user_logged_in?
end
end
Я хотел бы использовать кэширование и до сих пор мое печенье в силе.
Вы установили секретный ключ сеанса? set: session_secret, 'super secret' – mscccc
У меня возникла проблема, когда члены сессии существуют, когда я запускаю свое приложение Sinatra локально, но которое исчезает при работе на Heroku. Я пробовал использовать oAuth и теперь Koala для взаимодействия с Facebook, и оба заканчивают тем же вопросом. –