0

У меня есть старое приложение, написанное поверх Rails 3. Приложение имеет домашнюю систему аутентификации и широко использует файлы cookie для сеанса, идентификатора пользователя, роли и т. Д., Информации. Хотя приложение построено на Rails 3, это не приложение Rails, и было принято решение медленно его заменять по частям.Как разрешить приложение Rails 3 читать Rails 5 файлов cookie?

Мы будем размещать nginx перед старыми и новыми приложениями и использовать nginx в качестве прокси-прокси для маршрутизации различных URL-адресов в одно из двух приложений.

Поймать, что код не может быть изменен в приложении Rails 3, поскольку он аннулирует все существующие файлы cookie.

Новое приложение Rails 5 будет использоваться для аутентификации, и идея состоит в том, чтобы создать файл cookie, который старое приложение Rails 3 может читать и использовать как решение с одним знаком.

Для приложения Rails 5 мы будем использовать Devise. Rails 5 имеет зашифрованные файлы cookie, а Rails 3 использует подписанные файлы cookie. Есть ли способ сообщить Rails 5 создать старые cookie стиля Rails 3?

Код в приложении Rails 3 не может быть изменен, поскольку он приведет к аннулированию всех существующих файлов cookie.

ответ

1

Если вы не можете изменить приложение rails3, тогда вы должны сообщить Rails5 использовать файлы cookie, которые может читать приложение 3 рельсов. Rails 4.1 и более ранние используют «Маршал» для сериализации файлов cookie, но Rails 5 по умолчанию: json для сериализации.

Если вы просто обновляете одно приложение, тогда решение будет использовать: гибридную сериализацию, которая медленно переносит все файлы cookie в новый формат, однако в вашем случае это сломает приложение Rails3. Так попробуйте установить cookie_serializer в App/Config/Инициализаторы к: предводитель

Rails.application.config.action_dispatch.cookies_serializer = :marshal 

Вы также можете посмотреть на этот вопрос и ответ по поводу совместного использования куки между Rails 3 и 4: Sharing Cookies between rails 3 and 4

Смежные вопросы