Pregunta

Tengo que implementar la funcionalidad de auto-cierre de sesión en una de mis proyectos y yo sólo puedo imaginar por dónde empezar a buscar ideas pero SO .

Lo que necesito es para la aplicación para redirigir al usuario a la página de inicio de sesión si la sesión de usuario ha caducado.  Por favor, dime cuanto a lo que debería ser mi enfoque para abordar este requisito.

Planteamiento del problema: Si el usuario sale del sistema durante más de n minutos en cualquier instancia de inicio de sesión dada, el sistema les debe cerrar la sesión automáticamente.

¿Fue útil?

Solución 2

Esto se ha logrado mediante la siguiente manera:

1) Guarde el sello de tiempo de cada solicitud (servidor y Ajax con exclusión de la solicitud de sesión cheque Ajax) para el servidor en una sesión var.

2) consultar al servidor a través de una función JS usando ajax a intervalos frecuentes y comprobar si el diff tiempo entre la sesión de sello de tiempo y el tiempo de petición ajax es mayor que la val tiempo de espera de la sesión entonces log-off el usuario y de retorno de corriente un bool para esa solicitud Ajax.

3) Redireccionar la página actual a la página de inicio de sesión si el bool devuelve es cierto.

Otros consejos

El ir en los comentarios tanto como la pregunta, no estoy seguro de si lo que busca es algo que va a conectar al usuario después de un cierto tiempo, independientemente de la actividad, o justo después de un período de inactividad.

Si estás dispuesto a utilizar el , esto se puede hacer por usted sin ningún trabajo importante:

Configurar su proveedor de pertenencia .

Asegúrese de que su sección de autenticación define un loginUrl:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

Se puede establecer un tiempo de espera que no sea el valor por defecto de 30 minutos utilizando el "tiempo de espera" en el atributo forma elemento :

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

Esto registrará el usuario después de 15 minutos de inactividad en su sitio (ya sea con el navegador abierto, sin "latido" javascript o si pasan 15 minutos en otro sitio).

Denegar el acceso a usuarios anónimos

<authorization>
  <deny users="?" />
</authorization>

A continuación, asegúrese de que su nombre de usuario, registro y páginas de contraseñas olvidadas, posiblemente, son accesibles a todos los usuarios que utilizan el lugar Elemento:

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

De esta manera, cuando cookie de autenticación de un usuario que expira será redirigido a la URL especificada en el elemento loginUrl de la página de formas.


Si usted no está utilizando los mecanismos estándar de ASP.NET, entonces probablemente sería mejor implementar una "página base" modelo tipo.

Crea una nueva clase que hereda de System.Web.UI.Page que comprobará el estado de inicio de sesión del usuario, y si no se registran en / expirado entonces les redirigir a la página de inicio de sesión.

En le páginas que van a ser bloqueado, en lugar de heredar de System.Web.UI.Page, se hereda de la clase base de la página (un ejemplo de este tipo de configuración para hacer algo similar - Comprobar configuración en cada página ) puede verse en mi respuesta aquí


Su página de inicio de sesión probablemente tendrá que tener algún marco que revienta JS en ella para saltar de nuevo fuera del marco flotante:

if (top!=self.parent){
  top.location=self.parent.location;
}

O estás diciendo que con la tecla "back" que todavía se pueden ver sus páginas a través de la caché de los navegadores? En cuyo caso tendrá que estar jugando un poco con las cabeceras de caché en cada página:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Ok, bueno, en ese caso, usted también necesita un objeto de temporizador JS para realizar una Location.Replace a la página de inicio de sesión - tener esto en un control de usuario en cada página (o mejor aún, en su página maestra) a redirigir automáticamente al usuario después de n minutos:

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

El tiempo está en milisegundos, por lo que este se moverá en ellos en 15 minutos, y no hay necesidad de obtener todo el marco jQuery en su lugar sólo por eso.

También es posible que desee ver en la etiqueta meta de actualización:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

lo que obligará al navegador para actualizar a la página de inicio de sesión después de 15 minutos (de éste en segundos).

Dado que usted no sabe por dónde empezar, puede encontrar este artículo útil 4guys: http://www.4guysfromrolla.com/webtech/110701-1.shtml

Editar

jQuery temporizador puede ser útil si desea redirigir a una URL después ha transcurrido un periodo de tiempo conocido (es decir, la sesión periodo de caducidad).

Espero que esto ayude.

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