Rails (método set_no_cache) Não é possível desativar o cache do navegador no Safari e no Opera
Depois de usar o Devise para minha autenticação, descobri que havia uma falha de segurança, depois que o usuário faz logout, as variáveis da sessão são preservadas. Isso permite que qualquer pessoa pressione o botão Voltar e acesse a tela anterior do usuário conectado.
Eu olhei para esses postsNum 1 Numero 2 Numero 3
Eu adicionei estas linhas ao meu 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
No _form.html.erb eu adicionei isso no topo
<%if user_signed_in? %>
<%=link_to "Sign Out", destroy_user_session_path, :method => :delete %><br/>
<%= form_for(@listing) do |f| %>
<% if @listing.errors.any? %>
...........
Então eu testei o aplicativo no Firefox, Chrome e Safari.
O Firefox e o Chrome funcionavam bem, eu desliguei e apertei o botão Voltar e não pude ver a tela anterior do usuário, no entanto, no Safari e no Opera, o comportamento inseguro persistiu. Este código não tem efeito.
Alguma sugestão sobre como consertar isto?
obrigado