Foros del Web » Programación para mayores de 30 ;) » .NET »

Evitar Dos Sesiones de Navegador

Estas en el tema de Evitar Dos Sesiones de Navegador en el foro de .NET en Foros del Web. Pues eso. Lo pregunte antes pero creo que no se me entendio. Voy a explicar lo que quiero con ejemplos. Hay una web que hemos ...
  #1 (permalink)  
Antiguo 16/03/2005, 22:43
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Pregunta Evitar Dos Sesiones de Navegador

Pues eso. Lo pregunte antes pero creo que no se me entendio. Voy a explicar lo que quiero con ejemplos.

Hay una web que hemos desarrollado. Se autentica por formulario. Una vez validado, el usuario entra a los servicios que tiene en su perfil.

Ahora bien, imaginen que el usuario abre otra instancia del navegador e intenta entrar a los mismos servicios. Lo que quiero es que no se pueda, que de alguna forma pueda detectar que ya esta logueado y lo impida.

(En VB simple usaria
If App.PreviousInstance then End)

Es esto posible o no? Ya intente "flaguear" algo en la bd con los eventos de Session pero no se por que no ejecuta nunca el Session_OnEnd. Que otra cosa puedo hacer?
  #2 (permalink)  
Antiguo 17/03/2005, 00:40
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
No es practico hacerlo, por que estarias limitando al usuario. Hay varias formas de realizar esto>

- Marcando al usuario en la base de datos como que ha ingresado al servicio y cuando vuelva intentar logear se le indica que tiene otra sesion abierta. El problema es que tiene que expirar la sesion actual o el usuario tiene que cerrarla explicitamente. Si por alguna razón el navegador se cierra, tendra que esperar el tiempo para que la sessión termine sola. Para hacer esto en los eventos Session_End de asp o asp.net cerras la sessión (alias lo marcas en la base de datos como que ya se cerro)....1 problema es el esperar los 20 minutos (normales) para que esto suceda
- Otra forma es colocando una cookie en el navegador de igual manera establecer su tiempo de expiración en 20 minutos por que si no solo se relaciona con una sessión e igual podrán entrar...acarrea el problema del tiempo de expiración... segundo problema las cookies pueden estar bloqueadas por el navegador.

Solución práctica no complicarte la vida y permitir que el cliente o usuario haga lo que el crea más conveniente. =) te complicas menos y no limitas al usuario...que ya sabes si vos entraras a los foros y abrieras otro navegador y no te permitiera entrar a los foros, estarias renegando que por que no te dejan entrar...No hagas con tus usuarios lo que no te gustaria que otros webmasters te hagan.
__________________
José Luis Chávez del Cid
Systems Developer Specialist
ACS Inc./Xerox
Guatemala
  #3 (permalink)  
Antiguo 17/03/2005, 05:04
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
A ver...

- Ciertamente deberia dejar al usuario manejar la opcion como prefiera, pero es una de las cosas que el cliente quiere. Y en este negocio, cuando el cliente es una empresa muy grande, con politicas corporativas claras, que quiere si o si le des todo... tienes que aceptar, maxime porque mi jefe dice "hazlo!"

- La idea de usar el Session_End me parece la mejor, pero por alguna razon el codigo dentro de este evento nunca es ejecutado. No se por que.

- Lo de la cookie podria ser. Como hago eso? Nunca he utilizado cookies con ASP.NET...
  #4 (permalink)  
Antiguo 17/03/2005, 05:46
Avatar de sindestino  
Fecha de Ingreso: noviembre-2003
Ubicación: xxxx xxxx
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 0
Se me ocurre que podrías asociar a cada usuario con su correspondiente SessionID en una tabla o similar.
Si se presenta un nuevo logueo del mismo usuario en diferente sesión se le permite el ingreso pero se hace caducar la sesión anterior, de ésta forma nos aseguramos que si el cliente cerró el explorador por equivocación pueda volver a entrar, pero no así tener trabajando dos sesiones al mismo tiempo.

Por supuesto que hay algunas cuestiones técnicas que solucionar, pero es una idea a grandes razgos.

NOTA: el evento session_end NO se ejecuta cuando el usuario cierra el navegador, solo cuando la sesión se cierra explicitamente por código o se vence la sesión, comunmente a los 20 minutos de inactividad como dice el amigo jlchavez
  #5 (permalink)  
Antiguo 17/03/2005, 06:33
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Eso es! Gracias por la idea, sindestino!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:28.