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.

Другие вопросы по тегам