Saltar al contenido

Cómo deshabilitar el botón Atrás del navegador solo después de cerrar sesión en mvc3.net

Solución:

Puede borrar el historial del navegador cuando el usuario cierra la sesión:

var url = window.location.href;
window.history.go(-window.history.length);
window.location.href = url;

Sin embargo, esto no sería particularmente sólido: se basa en javascript, no funcionaría en varias pestañas y solo puede servir para molestar al usuario. En mi opinión, la mejor opción es configurar los encabezados de almacenamiento en caché adecuados de modo que el navegador no almacene en caché ninguna de sus páginas ‘iniciadas’ a través de un NoCacheAttribute aplicado adecuadamente:

public class NoCacheAttribute : ActionFilterAttribute
{  
  public override void OnResultExecuting(ResultExecutingContext filterContext)
  {
      filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
      filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
      filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
      filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
      filterContext.HttpContext.Response.Cache.SetNoStore();

      base.OnResultExecuting(filterContext);
  }
}

Use este código en la página html en la que necesita controlar el botón Atrás.

$().ready(function() {
    if(document.referrer != 'http://localhost:8181/'){ 
        history.pushState(null, null, 'login');
        window.addEventListener('popstate', function () {
            history.pushState(null, null, 'login');
        });
    }
});

Este código bloqueará el evento del botón de retroceso. La condición if es para permitir el botón Atrás si la página anterior es ‘http: // localhost: 8181 /’. El botón Atrás no funcionará si la página anterior no es ‘http: // localhost: 8181 /’. Si necesita bloquear todas las páginas anteriores, evite la condición if. los history.pushState Las declaraciones reemplazarán la URL en la barra de direcciones del navegador por ‘iniciar sesión’. Así que te recomiendo que cambies ‘inicio de sesión’ con la URL de tu página.

Ventajas de este método: –

  1. No es necesario controlar la caché.
  2. Podríamos permitir el evento del botón de retroceso para páginas anteriores específicas y podríamos bloquear el resto.

Esperando que mi respuesta ayude a alguien.

Desactivar el botón de retroceso no es una forma correcta de satisfacer sus necesidades. En su lugar, puede agregar las siguientes tres etiquetas en su archivo html, que se encarga de borrar la caché.

<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *