2009-09-02 8 views

Respuesta

2

Mi enfoque preferido es mostrar un mensaje para decir que la sesión ha expirado, luego redireccionar a una página de inicio de sesión que volverá a la página actual después del inicio de sesión.

+0

Ese es el enfoque más fácil/más seguro también. – Paul

0

no estoy seguro de qué marco ajax está utilizando, pero la mayoría (incluido asp.net ajax) maneja las excepciones del servidor al permitirle especificar la función onError.

Namespace.Object.Method (var1, var2, onSuccess, onError) {} .. etc ..

si se deja asp.net gestionar las sesiones, y siempre que la página en cuestión está habilitado para los usuarios autenticados solo, el framework emitirá una excepción de sesión no válida cuando haya expirado (no recuerdo cuál exactamente)

dentro de Error, puede verificar el tipo de excepción y redirigir a la página de inicio de sesión. de hecho, todo lo que tiene que hacer es volver a cargar la página actual y .net lo redirigirá a la página de inicio de sesión por usted. document.location.href = document.location.href; (Esto recargará la página actual ignorando los datos del formulario enviado, en su caso)

1

Uno podría ser realmente elegante con esto. Si AJAX en onError no es una sesión válida, abra una ventana emergente modal (formulario Lighbox) con su vista de inicio de sesión ajustada. Permita que el usuario inicie sesión desde el modal, luego no pierda ningún dato de formulario y no se redirecciona a todo su sitio. Sin embargo, lo más probable es que tenga que intentar volver a publicar sus datos. Podría tomar algo de hacer, pero al final, creo que es más transparente para el usuario final.

PD - Estoy pensando en Digg.com tipo de interfaz de inicio de sesión. Haga clic en Agregar comentario, obtendrá la ventana emergente modal.

+0

Si hace este método, asegúrese de que la solicitud esté en una conexión HTTPS, como debería hacerlo para todos los inicios de sesión. Lo cual, si su página principal no es HTTPS, tendrá que trabajar con la misma política de origen en JS. – Paul

+0

Acepto el HTTPS, pero usando Lightbox, no creo que tenga que preocuparse por el mismo origen. Está llamando a una página web real para abrir en lo que equivale a un IFrame, rellene el formulario y publique el formulario .NET configura la cookie. No hay llamadas JS entre las dos páginas, es por eso que debe volver a enviar el formulario una vez que la cookie se establece desde la página de inicio de sesión IFramed. Ahora, si desea trabajar el mismo origen, puede enviar el formulario automáticamente después de un inicio de sesión exitoso. – Tommy

Cuestiones relacionadas