2012-07-01 3 views
27

Ich habe Gerät in meiner Web-Anwendung konfiguriert. Ich habe ein Problem mit dem folgenden Workflow:Nach dem Abmelden, wenn ich zurückdrucken Knopf kann ich die letzte Seite sehen, die Anmeldung erfordert

Für den Zugriff auf Admin-Panel muss ich mich anmelden. Danach navigiere ich normalerweise zum Admin-Panel meiner Web-App. Wenn ich auf "Abmelden" klicke, wird ich auf die Root-Seite weitergeleitet. Dies ist das Verhalten, das ich bisher wollte.

Das seltsame Ding beginnt, wenn ich auf dieser Seite und nach den oben genannten Aktionen auf den Zurück-Knopf des Browsers klicke, der mir die zwischengespeicherte letzte Seite zeigt, die ich war. Meine Sitzung wurde zerstört, denn wenn ich auf "Aktualisieren" klicke, wird ich weitergeleitet und es wird darauf hingewiesen, dass ich mich anmelden muss, um auf die Seite zugreifen zu können, aber ich möchte die letzte Verlaufsseite des Browsers nicht sehen können.

Wie ist das möglich und was kann ich dagegen tun? Es hat mit Browser-Caching zu tun, oder? Die einzige Möglichkeit, es zu beheben, besteht darin, das Zwischenspeichern von den angemeldeten Seiten zu entfernen, um dieses Verhalten zu verhindern? Wie kann ich das machen?

+0

Können Sie zu SSL wechseln? –

+1

Sie können diese zwei Links überprüfen: [1] [1] und [2] [2]. [1]: http://stackoverflow.com/questions/4120289/how-to-clear-browser-cache-after-user-logout-to-prevent-access-to-private-info- v [2]: http://stackoverflow.com/questions/711418/how-to-prevent-browser-page-caching-in-rails – tiktak

Antwort

53

Sie möchten die Header Ihrer Seite setzen Caching zu verhindern. Sie können, dass so wie tun:

before_filter :set_cache_buster 

    def set_cache_buster 
    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 

Kredit an die erste Reaktion von this thread geht.

+0

Hallo, in Hexe Controller? – Zakos

+0

In ApplicationController – inquisitive

+4

Was passiert, wenn ich nur nach dem Abmelden nicht cachen möchte? Ich denke, das wird den Cache nach jeder Anfrage entfernen. Was ist mit Assets, wird es entfernt? – fabricioflores

5

Sie können versuchen, dem Browser mitzuteilen, dass er keine Daten zwischenspeichert, aber das ist es - ein Versuch.

Wenn sie die Seite vorher gesehen haben, gibt es wenig, was Sie tun können, um zu erzwingen, dass Sie die Seite nicht wieder sehen können - das ist zu diesem Zeitpunkt etwas außerhalb Ihrer Kontrolle.

Zum Beispiel, als kann den HTML-Code der Seite herunterladen (was sie tun, wenn sie die Seite anzeigen) und Sie können sie auch nicht davon abhalten, sagen, ein Screenshot.

Das Browser-Caching wird in einigen (meisten?) Fällen funktionieren, beziehen Sie sich auf die Antwort von Michael Frederick.