Rails 4.2: Как отключить шифрование для куки
Я недавно обновил свое приложение rails 3.2 до rails 4.2. Я сталкиваюсь с проблемой того, что файлы cookie, установленные новыми rails 4.2, подписаны и зашифрованы, чего я не хочу, потому что мое приложение взаимодействует с другими приложениями rails 3. Я хочу восстановить старый способ создания файлов cookie в 4.2.
1 ответ
Это правда, что Rails 4 CookieStore шифрует куки по умолчанию:
Если вы установили secret_key_base, ваши куки будут зашифрованы. Это идет дальше, чем подписанные куки-файлы, поскольку зашифрованные куки-файлы не могут быть изменены или прочитаны пользователями. Это по умолчанию, начиная с Rails 4.
Кажется, что нет возможности отключить это через параметры конфигурации, поэтому один из способов не устанавливать secret_key_base
,
Другой способ - определить свое пользовательское хранилище сеансов с помощью переопределенного метода CookieStore#cookie_jar:
class ActionDispatch::Session::MyCustomStore < ActionDispatch::Session::CookieStore
private
def cookie_jar(request)
request.cookie_jar.signed
end
end
И в config.rb
:
config.session_store :my_custom_store
Таким образом, ваши куки будут храниться в подписанной банке, как в Rails 3.