Rails (метод set_no_cache) Невозможно отключить кеширование браузера в Safari и Opera.

После использования Devise для аутентификации я обнаружил брешь в системе безопасности: после выхода пользователя из системы переменные сеанса сохраняются. Это позволяет любому нажать кнопку «Назад» и получить доступ к предыдущему экрану вошедшего в систему пользователя.

Я просмотрел эти посты Num 1 Num 2 Num 3

Я добавил эти строки в свой application_controller

before_filter :set_no_cache
def set_no_cache
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end

В _form.html.erb я добавил это вверху

<%if user_signed_in? %>
<%=link_to "Sign Out",  destroy_user_session_path, :method => :delete %>
<%= form_for(@listing) do |f| %> <% if @listing.errors.any? %> ...........

Затем я протестировал приложение на Фаерфокс, Хром и Сафари.

Firefox и Chrome были в порядке, поскольку я вышел из системы и нажал кнопку «Назад» и не смог увидеть предыдущий экран пользователя, однако в Safari и Opera небезопасное поведение сохраняется. Этот код не действует.

Есть предложения, как это исправить?

Спасибо

12
задан Community 23 May 2017 в 12:00
поделиться