2011-05-05 13 views
6

En mi aplicación web necesito restringir el número máximo de usuarios que acceden a mi aplicación web. El número de usuarios se configura en un archivo de propiedades separado. He creado una interfaz HttpSessionListener para rastrear diferentes pero el problema que enfrentan es que un usuario puede solicitar el uso de varias instancias del navegador y la cantidad de usuarios se incrementa en 1 aunque el mismo usuario con una instancia diferente del navegador. Necesito contar los usuarios basados ​​en una dirección IP diferente o alguna otra parámetro únicoNúmero máximo de usuarios para una aplicación web

+3

¿Y qué pasa con los usuarios que están detrás de la misma IP pública? – Joe

+0

La aplicación utilizada en intranet.its utilizada en la oficina – Lalchand

+0

Si los inicios de sesión no son una opción, yo diría que agregue un requisito para las cookies, los usuarios sin cookies habilitados son rechazados de inmediato. Use sesiones, luego puede administrar el recuento a través de un contador de nivel de aplicación y un nuevo usuario tendría una sesión en blanco var, si es límite, rechace la solicitud del usuario; de lo contrario, continúe y establezca la sesión var y +1 en el contador. También maneja el tiempo de espera de la sesión para los rodillos, por lo que el contador baja correctamente. Los cambios en el contador también deberían ser seguros para la condición de carrera, de todos modos ¡buena suerte! –

Respuesta

3

Una posibilidad podría ser utilizar cookies de sesión: si el nuevo usuario conectado no tiene una cookie de sesión, proporcióneles una e incremente su contador; de lo contrario, no incremente el contador.

+0

¿Qué ocurre si las cookies están bloqueadas en el navegador del cliente? – Lalchand

+1

@Lalchand Eso le impediría diferenciar entre dos usuarios separados y un usuario en dos navegadores, pero debería poder asignar una variable de sesión si no puede usar una cookie, y eso debería tener el comportamiento deseado si un usuario abre el sitio web dos veces en el mismo navegador. –

+0

Supongo que en la intranet de una oficina puede hacer que todos los navegadores acepten las cookies de su aplicación. – ZoolWay

1

Oculte su aplicación web detrás de un formulario de inicio de sesión de usuario y restrinja en función de la cantidad de usuarios que inician sesión.

+0

Y quizás agregue un tiempo de espera relativamente corto, como 5 minutos. Por lo tanto, las conexiones inactivas no acaparan la aplicación. –

2

No se puede saber si el mismo usuario está usando instancias de usuarios diferentes y si no puede saber si un usuario está usando dos computadoras diferentes, etc.

Puede restringir el número máximo permitido de sesiones abiertas por usuario, pero tenga en cuenta que una cookie es solo un número de serie que podría ser inyectado en otra instancia de un navegador como encabezado. Si el usuario está detrás de la misma subred, ni siquiera podría distinguir ese caso con su dirección IP.

Quiero decir, lo que llegue al ámbito del lado del cliente, de ninguna manera está bajo su control. Por lo tanto, estoy bastante seguro de que, aunque podrías agregar algunos obstáculos, nunca serás capaz de controlar eso.

De todos modos, aquí hay algunos obstáculos:

  • Restringir entrada a una sola.
  • Cookies de sesión, cookies de dominio, cuadro de texto de entrada oculto.
  • Un applet Java que hace algo raro (como obtener la dirección IP local detrás de una subred u otra información, si está permitido).
  • Un programa flash que hace algo raro.
  • Seguimiento de la dirección IP remota.
  • Una combinación de los anteriores.
0

Esto es un problema real no solo para usted.

Por ejemplo, "Quality Center" de HP funciona así: cuentan el número de inicios de sesión activos actuales. Si se alcanza el límite de inicios de sesión simultáneos, no puede iniciar sesión con un nuevo inicio de sesión.

Eso funciona bastante bien.

Pero, si usa un inicio de sesión que ya está conectado, puede usar la aplicación. Entonces, dos usuarios que usan el mismo nombre de usuario pueden trabajar al mismo tiempo.

Sigue siendo una buena solución, una idea y no demasiado complicada de desarrollar.

0

Esto tiene que ser el problema más loca que he encontrado, y la guinda del pastel es

He creado una interfaz HttpSessionListener para rastrear diferentes usuarios, pero el problema es que estoy frente a un usuario puede solicitar el uso de varias instancias del navegador y la cantidad de usuarios aumenta en 1 aunque el mismo usuario con una instancia de navegador diferente

En serio ?? ¿Quién llegó a los requisitos? El problema que necesitas resolver es el requisito loco, y en serio, no implementes locuras solo porque un BA se confundió y no hizo su trabajo.

Cuestiones relacionadas