2012-07-01 17 views
27

He idear configurado en mi aplicación web. Tengo un problema con el siguiente flujo de trabajo:Después de cerrar la sesión, si pulso el botón hacia atrás puedo ver la última página de inicio de sesión que requiere

Para acceder al panel de administrador, necesito iniciar sesión. Después de eso navego al panel de administración de mi aplicación web normalmente. Cuando hago clic en cerrar sesión me redirige a la página raíz, que es el comportamiento que quiero hasta ahora.

Lo extraño comienza cuando, en esta página y después de las acciones anteriores, hago clic en el botón Atrás del navegador, que me muestra la última página en caché que tenía. Mi sesión se ha destruido porque si hago clic en actualizar, me redirige y menciona el inicio de sesión para acceder a la página, pero no deseo poder ver la última página de historial del navegador.

¿Cómo es esto posible y qué puedo hacer para evitarlo? Tiene que ver con el almacenamiento en caché del navegador, ¿verdad? ¿La única manera de solucionarlo es eliminar el almacenamiento en caché de las páginas registradas para evitar este comportamiento? ¿Cómo puedo hacer eso?

+0

¿Se puede cambiar a SSL? –

+1

Puede consultar estos dos enlaces: [1] [1] y [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

Respuesta

53

Quiere configurar los encabezados de la página para evitar el almacenamiento en caché. Puede hacerlo de esta manera:

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 

crédito va a la primera respuesta de this thread.

+0

Hola, en el controlador de brujas? – Zakos

+0

En ApplicationController – inquisitive

+4

¿Qué sucede si solo deseo que no se guarde en la memoria caché después de finalizar la sesión? Creo que esto eliminará el caché después de cada solicitud. ¿Qué pasa con los activos, se eliminará? – fabricioflores

3

esto tiene sin duda que ver con el almacenamiento en caché. Debe configurar los encabezados HTTP apropiados en consecuencia. Esto probablemente tiene la respuesta que necesita: How to prevent browser page caching in Rails

  • Johannes
5

Puede intentar decirle al navegador que no almacene en caché cosas, pero eso es lo que es, un intento.

Si vieron la página anteriormente, hay poco que puede hacer para exigir que no se vuelva a ver la página; en ese momento está fuera de su control.

Por ejemplo, que pueden descargar el HTML de la página (que es lo que están haciendo cuando ven la página) y tampoco puedes evitar que tomen, por ejemplo, una captura de pantalla.

Dicho caché del navegador funcionará en algunos (¿la mayoría?) Casos, consulte la respuesta de Michael Frederick.

Cuestiones relacionadas