por net formularios formsauthentication autenticacion asp c# asp.net authentication forms

c# - net - authentication mode forms web config



ASP.NET | AutenticaciĆ³n de formularios | Obtenga TODOS los usuarios que hayan iniciado sesiĆ³n(lista de todos los usuarios o cantidad) (4)

La autenticación de formularios almacena todo su estado en una cookie que se pasa a los navegadores de los usuarios.

(Esto permite que la Autenticación de formularios funcione en una granja de servidores web)

Por lo tanto, no hay forma de obtener una lista de usuarios registrados, etc., de la Autenticación de formularios estándar.

Sin embargo, la Autenticación de formularios tiene eventos que se activan cuando autentica a un usuario, etc. Puede actualizar su propia lista de usuarios en estos eventos (tenga cuidado con el bloqueo si lo hace)

Sin embargo, como un usuario será "conectado" cuando los navegadores expiren la cookie, le resultará muy difícil eliminar correctamente a todos los usuarios registrados en el momento correcto de su lista.

Es posible que sea mejor que haya almacenado la última vez que vio a cada usuario y luego tenga una lista de usuarios que haya visto en, por ejemplo, los últimos 5 minutos. Por ejemplo, mantenga una lista de usuarios activos .

Estoy usando .NET 3.5. Además, se utiliza la Autenticación de formularios.

¿Hay alguna forma de obtener la lista de TODOS los usuarios conectados o un recuento en ASP.NET?

Nota: No estoy usando Membresías y Roles


El proveedor de membresía sí tiene sus beneficios, pero solo para rastrear a los usuarios en línea también puede:

  1. Agregue una columna LastActivityDate a su tabla de usuario y actualícela desde su código durante el inicio de sesión y en todas las cargas de página para ese usuario.

  2. Y para obtener los usuarios en línea durante los últimos X minutos solo use el siguiente sql

    Select * from Users where LastActivityDate > DATEADD(minute, -(X), GETDATE())


No, no hay a menos

  1. Usted ha definido uno en su propio código

  2. Está utilizando el proveedor de membresía ASPNET predeterminado que tiene GetNumberOfUsersOnline() un método GetNumberOfUsersOnline() .

  3. Está utilizando un proveedor de membresía personalizado y ha proporcionado una implementación para el método GetNumberOfUsersOnline() usted mismo

El proveedor de membresía de ASPNET predeterminado calcula el número de usuarios en línea consultando la base de datos de SQL Server y comprobando el LastActivityDate almacenado contra cada usuario contra la propiedad UserIsOnlineTimeWindow definida que puede establecer en web.config. Si LastActivityDate es mayor que la hora actual menos el valor de UserIsOnlineTimeWindow (que representa los minutos), se considera que un usuario está en línea.

Si quisiera hacer algo similar, entonces podría considerar implementar un método similar. puede ver el código de los proveedores predeterminados al descargar el código fuente . Para completar su imagen, es posible que también desee ejecutar aspnet_regsql.exe para que pueda ver los procedimientos almacenados que utilizan los proveedores predeterminados.


Usé Session_Start y Session_End en Global.aspx. funciona la mayoría de las veces, excepto que el usuario cierre su navegador. el lado del servidor necesita esperar a que expire la sesión para eliminar al usuario.