Dopo aver utilizzato Devise per la mia autenticazione, ho scoperto che c'era un buco di sicurezza in quanto, dopo che l'utente si è disconnesso, le variabili di sessione sono conservate. Ciò consente a chiunque di premere il pulsante Indietro e accedere alla schermata precedente dell'utente connesso.Rails (metodo set_no_cache) Non è possibile disabilitare la memorizzazione nella cache del browser in Safari e Opera
ho guardato questi posti Num 1 Num 2 Num 3
ho aggiunto queste righe alla mia 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
Nel _form.html.erb ho aggiunto questo al vertice
<%if user_signed_in? %>
<%=link_to "Sign Out", destroy_user_session_path, :method => :delete %><br/>
<%= form_for(@listing) do |f| %>
<% if @listing.errors.any? %>
...........
Poi ho provato l'a pplicazione su Firefox, Chrome e Safari.
Firefox e Chrome sono stati perfetti in quanto ho disconnesso e premo il pulsante Indietro e non riuscivo a vedere la schermata precedente dell'utente, tuttavia, in Safari e Opera, il comportamento insicuro persiste. Questo codice non ha effetto.
Qualche suggerimento su come risolvere questo problema?
Grazie
Questo è un duplicato di http://stackoverflow.com/questions/2866826/how-do-i-stop-opera-from-caching-a-page – hallvors
hmm. Ho visto questo link. No, dove parla di Safari, menziona solo Opera. E ho provato tutte le soluzioni elencate qui come potete vedere sopra. – banditKing
Ops, hai ragione su Safari. Solo la parte "Opera" della domanda è un vero duplicato, poiché la risposta spiega perché Opera si comporta in questo modo e l'unica vera soluzione è usare https e must-revalidate. – hallvors