¿Cuál es el mejor enfoque para manejar tiempos de espera de sesión en asp.net

Hay varias formas de manejar tiempos de espera de sesión, como “meta refreshhes”, javascript en funciones de carga, etc.

Me gustaría algo así como: 5 minutos antes del tiempo de espera, advierte al usuario …

También estoy contemplando mantener la sesión abierta durante todo el tiempo que el navegador esté abierto (todavía tengo que averiguar cómo hacerlo … probablemente algún iframe con refrescante).

¿Cómo manejas los tiempos de espera de sesión, y en qué dirección crees que debería ir?

El mejor enfoque para manejar tiempos de espera de sesiones.

Yo digo que hay 2 casos básicos.
Una es cuando los usuarios ingresan poca o ninguna información, y solo leen los informes, o piensan poco con el mouse. En este caso, no hay una manera fácil de informarle que la sesión va a caducar. Si va a verificar el tiempo restante de la sesión llamando al código, entonces automáticamente actualiza la sesión. Luego, si tiene un temporizador para realizar la cuenta atrás de la sesión, tal vez el usuario abra una nueva pestaña de su sitio web y la sesión expirará, pero no el momento en que tenga una nota con javascript y el usuario reciba un mensaje incorrecto.

Entonces, para mí, cuando el usuario ingresa poca o ninguna información, simplemente deje expirar la sesión, si pierde un clic, lo volverá a hacer más tarde.

En segundo lugar, cuando el usuario necesita ingresar muchos datos, puede pasar un tiempo, un texto largo, por ejemplo, para escribirlo y solucionarlo. En este caso, utilizo la siguiente técnica y no dejo que la sesión se apague.

Cómo mantener la sesión abierta mientras el navegador.

Aquí hay una técnica muy agradable y simple, utilizo una imagen que hago una recarga de ella antes de que la sesión expire utilizando JavaScript.

  

En un tercer caso , puedes hacer esto. Nos importa si la sesión expira solo en la publicación posterior. Cuando el usuario tiene que ingresar algunos datos y en la publicación posterior, la aplicación lo redirige a la página de inicio de sesión y pierde la publicación.

En este tercer caso , puede capturar los datos de la publicación y guardarlos hasta que el usuario vuelva a iniciar sesión. Usted captura los datos de global.asax en global.asax en el

 protected void Application_AuthenticateRequest(Object sender, EventArgs e) 

Esta es la función que llamó antes de redireccionar a la página de inicio de sesión, y allí verá si tiene datos de publicación y el uso requerido para iniciar sesión, guarde los datos de la publicación, éter en una nueva página de redireccionamiento, éter en el servidor (tal vez en sesión, tal vez en su base de datos temporal).

Ahora, después de que el usuario vuelva a iniciar sesión, lo redirecciona nuevamente a la última página con los datos de la publicación guardada, y el usuario continúa como está.

El único truco aquí es hacer una página intermedia, que represente el formulario con los últimos datos publicados y una llamada javascript redirigida automáticamente.

Lo único que se me ocurre es generar algún script en la página que cree un temporizador de cliente, de modo que cuando la página se reciba y represente, pueda mostrar una alerta X minutos más tarde (es decir, 5 minutos antes de que caduque).

Si prefiere que la sesión solo se mantenga activa, puede hacerlo con un controlador genérico (ASHX) que llama periódicamente a través de AJAX. Esto ayudará a actualizar la sesión y debe permanecer activa mientras continúen las llamadas AJAX.

Ejemplo “keepalive.ASHX”:

 <%@ WebHandler Language="C#" Class="keepalive" %> using System; public class keepalive : System.Web.IHttpHandler { public void ProcessRequest (System.Web.HttpContext context) { context.Response.ContentType = "text/json"; var thisUser = System.Web.Security.Membership.GetUser(); if (thisUser != null) context.Response.Write("[{\"User\": \"" + thisUser.UserName + "\"}]"); } public bool IsReusable { get { return false; } } } 

Y aquí está el script en la página para llamarlo (con jQuery para simplificar):

  

Use algunos jquery que desactivan las claves de la variable de tiempo de espera de su sesión en web.config. Puede utilizar este truco de retardo de Jquery para que cuando se produce un tiempo específico (x número de minutos después de la carga de la página), aparece un tiempo límite de sesión de la div en x minutos. Agradable, limpio y bastante simple.

En cuanto al tiempo de espera de la sesión, la llamada ajax de Codesleuth sería perfecta.