Rails сессия не сохраняется - PullRequest
4 голосов
/ 30 сентября 2011

Я не могу сохранить сеансы Rails как в локальной среде, так и во внешней промежуточной среде.Сейчас я просто делаю что-то простое, например session[:cart_id]=1 на одном из моих контроллеров.Если я перезагружу страницу, сессия будет пустой {}.Я, должно быть, упускаю что-то простое, потому что я не могу найти в Интернете ничего о том, что это часто встречается.

ОБНОВЛЕНИЕ 1

Даже самый простой код показывает, что сессии не сохраняются, напримерЯ могу сделать что-то столь же простое, как session[:counter] = session[:counter].to_i + 1 в своем действии, а затем = debug session в моем представлении, и каждый раз, когда я обновляю браузер, я получаю:

{} {"session_id"=>"280031b7eb3b4bf612da85acc8815b3b", "counter"=>1}

иновый session_id генерируется каждый раз.

ОБНОВЛЕНИЕ 2

Я удалил опцию :domain => :all из своего хранилища сеансов, и все выглядит лучше, но все еще не сохраняется.Теперь session_id генерируется только один раз, так что это сохраняется.Но если я сохраню целое число внутри сеанса, оно все равно не будет сохранено до следующего запроса.

1 Ответ

4 голосов
/ 11 августа 2014

У меня была такая же проблема, и это сводило меня с ума.

Оказалось, что у меня protect_from_forgery в моем ApplicationController, который молча заменил сеанс на NullSession.

Я заметил это, когда бежал raise session.class.inspect.

Использование protect_from_forgery with: :exception вместо этого правильно раскрывает основную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...