Pregunta

Me programado un sitio web, prepara un mecanismo de inicio de sesión (a través de cuadro de texto, no herramientas Iniciar sesión), los usuarios desean cierre de sesión, que haga clic en el botón de cierre de sesión. Sin embargo, mi problema es que si los usuarios no hacen clic cierre de sesión botón o cerca de la página web o cambiar otro, ¿Cómo puedo entender esta situación?
Según mi mecanismo, cuando los usuarios de cierre de sesión, en el PP algunos inserción y la operación de eliminación están haciendo.
También quiero hacer esto con el cierre de la página, cambiar a otro.
Gracias.

¿Fue útil?

Solución

Parece que usted está haciendo una operación de base de datos al cerrar la sesión, y cuando la gente simplemente navegar fuera sin hacer clic en el botón de cierre de sesión, el código no se dispara.

En el Global.asax, echar un vistazo a Session_End. Tal vez usted puede poner su operación en ese país.

protected void Session_End(Object sender, EventArgs e) 
{ 
    // Your code goes here. Since your logout code probably relied on the user being
    // logged in, you might end up checking Request.IsAuthenticated here. Why? Because
    // this event fires any time a session ends -- even if the user is not logged in! 
}

Tenga en cuenta que si se utiliza esta, en realidad se dispara cuando el IIS finaliza la sesión, no cuando se cierra el navegador. Por defecto, el tiempo de la sesión después de 20 minutos de inactividad.

Una vez que decide implementar esta forma, usted podría tener su página de desconexión de llamadas Session.Abandon, lo que dará lugar Session_End. Eso parece limpio para mí.

Aquí hay un enlace de MSDN con algunos detalles más sobre eventos de sesión: http: // msdn.microsoft.com/en-us/library/ms178583.aspx

Otros consejos

final

Sesión es probablemente su mejor apuesta como se mencionó anteriormente, pero si usted es paranoico, se puede poner un poco de Javascript / AJAX en su página que pings su servidor cada X segundos a básicamente dicen "Todavía estoy aquí". A continuación, si se van, en lugar de esperar todo el 20 minutos o así para la sesión a extremo, se puede saber dentro de X segundos que han dejado, ya que no está ping más.

Si su espera de sesión es de 20 minutos sólo se detecta después de 20 minutos que la sesión ha terminado = el usuario ha salido de tu página. Puede detectar el final de la sesión en el Session_End global.asax como Brian describe.

Si desea detectar a alguien salir de la página anterior -. Por ejemplo después de un minuto, se puede reducir el tiempo de espera de sesión de 1 minuto

El problema es entonces, si el usuario no hace nada en su página - no volver después al servidor -. Su sesión será el tiempo de espera a pesar de él sigue viendo su página

Para evitar esto se puede utilizar un mantener viva mecanismo. Su página llamaría el servidor regularmente en el fondo, siempre que el usuario visualiza la página. Esto se puede hacer con AJAX Javascript o mecanismos oher como iframe oculto.

Ver por ejemplo: ASP.NET AJAX y mantener viva la sesión - ¿Cuál es la forma estándar de hacerlo

No estoy del todo seguro, pero creo que una forma en que esto se lleva a cabo es la de no establecer una caducidad de una cookie, lo que hará que sea una cookie de sesión que se pierde cuando se cierra el navegador. Debido a que su cookie de sesión normalmente contiene la clave de sesión, entonces van a ser esencialmente comenzando una nueva sesión cuando se abren un navegador de nuevo.

Cuando hago sistema de usuarios, que añadir a la tabla de base de datos con los usuarios que son de inicio de sesión (algo así como sesión) y les di marca de tiempo. Cada actualización de sitio que ejecuta la consulta a los usuarios de borrado con indicación de la hora de mayor edad de 30 minutos. Se trata de una solución muy fácil, tal vez hay una mejor manera.

puede ser que desee echa un vistazo a los eventos en global.asax . Puede actualizar la base de datos con el evento Session_End. También puede utilizar el evento BeginRequest que se dispara en cada página y de control (podrás obtener múltiples visitas por página si tiene varios controles). También puede poner algo en su evento Load.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top