2013-05-13 5 views
4

Rails 4 будет включать зашифрованные сеансы на основе файлов cookie. Мы хотели бы перейти на это из активного хранилища файлов cookie. Есть ли способ сделать это, не прерывая клиентов моего приложения? Я не хочу удалять все текущие сеансы.Перенесите сеанс из активного магазина записей в хранилище файлов cookie

+2

Могу ли я спросить, почему вы хотите это сделать? Из руководства по безопасности рельсов http://guides.rubyonrails.org/security.html вам следует избегать хранения больших объектов в файлах cookie. => ОК, теперь он безопасен, но вы должны избегать больших файлов cookie. Поэтому для меня просто продолжайте использовать активный сеанс записи, даже если вы используете зашифрованные файлы cookie. – joel1di1

ответ

2

Согласитесь с Нафаном, не возвращайтесь назад, если вы не беспокоитесь о производительности БД из-за хранения сеансов. В этом случае я предлагаю Redis или Memcached store для ваших сеансов, а не для файлов cookie.

0

Есть еще одна проблема. Я попытался перейти из активной записи в хранилище файлов cookie, и каждый пользователь теперь получает ошибку «Мы сожалеем, но что-то пошло не так». Решение состоит в том, чтобы очистить файлы cookie, но я должен рассказать об этом каждому пользователю. Многие из них подумают, что сайт сломан. Так что это плохо. И если вы не можете связаться с каждым пользователем, это очень плохо.

0

Это выполнимо, я просто сделал это по-другому (по причинам, в которые я не буду входить, нам нужно было иметь их в базе данных). В контроллере приложения, поставить перед фильтром, как это:

prepend_before_filter :migrate_session 

def migrate_session 
    # migrating over old sessions 
    session_model = YourSessionModel.find_by_session_id(session.id) 
    if session_model 
    data = session_model.data 
    data.each do |key,value| 
     session[key] = value 
    end 
    session_model.destroy 
    end 
end 

Все, что входит в хэш сессии будет сохранялось в куки. После того, как у вас больше нет активных сеансов записи, вы можете избавиться от этого кода.

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