Estoy desarrollando un sitio ASP.net (usando .NET 4, EF, jQuery Ajax, SQL Server 2008 R2). En este sitio quiero evitar multi-login
. Me refiero a que si inicia sesión en el sitio, no puede volver a iniciar sesión en el sitio desde otro navegador o computadora ya que ya inició sesión.¿Cómo evitar que los usuarios inicien sesión en mi sitio más de una sesión?
que plantar una idea y desarrollado en mi sitio, pero tiene un problema y es debido a ese problema que decido hacer una pregunta aquí
Tengo una tabla de SQL Server como esto:
Id [int] NOT NULL IDENTITY(1,1) //PK
UserId [int] NOT NULL //Relation to User table
Key [nvarchar](50) NOT NULL //Unique
Cuando un usuario inicia sesión en el sitio, que insertar una fila en esta tabla como esta:
UserId = The Id of logged in user
Key = Session.SessionId
y también hay un código para eliminar un registro de esta tabla que ejecutar WH en:
- usuario intenta cerrar la sesión de su cuenta de
- en
Session_End
evento englobal.asax
Todo funciona correcta y perfecta, simplemente:
Problema: cuando el usuario cierra el navegador , esa fila no se borra (pensé que cuando cierra el navegador, su fila en esa tabla se eliminará en el evento Session_End
, pero no lo hizo !!!)
¿Qué puedo hacer? ¿Alguna solución para este problema? ¿Debo cambiar mi estrategia o hay una solución?
Disculpa por mi mala sintaxis. Soy nuevo en Inglés
Cualquier idea puede ser útil
respecto
Foroughi
Update1: No consumo ASP membresía y administrar mis usuarios a mí mismo
ACTUALIZACIÓN2: uso InProc mo de mi estado de sesión con 20 minutos de tiempo de espera
¿No es más fácil desconectarse de la sesión existente cuando el usuario inicia un nuevo inicio de sesión? Esto también es más práctico cuando el usuario olvida cerrar la sesión en una ubicación diferente (por ejemplo, casa/trabajo). –
@marc_s gracias amigo y perdón por ellos –
@AliForoughi: no hay problema - la pregunta sigue siendo clara y perfectamente comprensible –