2009-03-20 10 views
5

Cuando usa la membresía de asp.net y tiene la etiqueta [Autorizar] en un controlador/Acción, a veces cuando vuelve de tomar café/una caminata, ha cerrado sesión en el sitio. Cuando hace clic en un botón o vínculo que invoca una llamada Ajax, el html devuelto no es el que solicitó, sino la pantalla de inicio de sesión, que luego se procesa en la página (si usa $ ("marcador de posición"). Html (resultado)).Pantalla de inicio de sesión en el resultado de Ajax - Asp.net Mvc

¿Hay alguna forma de detectar esto en jQuery? Como es legítimo html, no obtienes un error, pero no es algo que quieras que suceda, por supuesto.

Respuesta

6

Una cosa que podría hacer es detectar el tiempo de espera de la sesión del lado del cliente. Configure un temporizador que caducará poco antes de que expire su sesión actual. Haga que el temporizador muestre un cuadro de diálogo que indique que la sesión está a punto de caducar y permita que el usuario tenga la oportunidad de renovarla (envíe una solicitud AJAX para actualizar el temporizador de la sesión). Tenga otro temporizador en el cuadro de diálogo que expirará antes de que se agote el tiempo restante en la sesión real. Si se dispara este temporizador, restablezca el href de la página a la url de cierre de sesión y cierre la sesión del usuario. Obviamente, los temporizadores deberán reiniciarse según la actividad del usuario en la página: solicitudes ajax, etc.

6

El enfoque de tiempo de espera de sesión del cliente de tvanfosson funciona muy bien, de hecho, me han impresionado varios sitios que Después de almorzar volvimos y descubrimos que han sido redirigidos automáticamente a la página de inicio de sesión.

Otro enfoque podría ser la siguiente:

usted envía una petición Ajax a (digamos)/Cuenta/detalles, pero la cookie de inicio de sesión ha expirado, por lo que no está autorizado a ver que; el controlador regresa/Seguridad/Login en su lugar.

Si el controlador devuelve la vista de registro en lugar de la página solicitada, ¿ha considerado establecer el código de respuesta a 401 Not authorized en lugar de 200 OK?

Debería modificar su devolución de llamada Ajax para inspeccionar el código de estado de la respuesta Ajax, y si es un 401 No autorizado, puede responder en consecuencia - redirigir a la página de inicio de sesión, mostrar un cuadro de inicio de sesión emergente , o simplemente un mensaje de error que diga "lo siento, debe iniciar sesión nuevamente"

Cuestiones relacionadas