Pregunta

Realmente estoy preguntando esto por poder, otro equipo en el trabajo recibió una solicitud de cambio de nuestro cliente.

El problema es que nuestro cliente no quiere que sus empleados inicien sesión con un usuario más de uno al mismo tiempo.Que están siendo bloqueados y compartiendo inicios de sesión.

Dado que se trata de una granja web, ¿cuál sería la mejor manera de abordar este problema?

¿El almacenamiento en caché de la base de datos no causaría problemas de rendimiento?

¿Fue útil?

Solución

Podrías considerar el uso de un sistema de caché distribuido como memcached

Resolvería este problema bastante bien (es MUCHO más rápido que una base de datos) y también es excelente para almacenar en caché casi cualquier otra cosa.

Otros consejos

Es sólo un costo de hacer negocios.

Sí, el almacenamiento en caché de una base de datos es más lento que el almacenamiento en caché de su servidor web.Pero hay que almacenar esa información de estado en una ubicación centralizada; de lo contrario, un servidor web no sabrá qué usuarios han iniciado sesión en otro.

Suposición:Está intentando evitar múltiples inicios de sesión simultáneos por parte de un solo usuario.

Una operación de base de datos al iniciar y cerrar sesión no causará un problema de rendimiento.

  • Si está utilizando un proxy de almacenamiento en caché, eso causará un problema:
  • un usuario cerrará sesión, pero no podrá volver a iniciar sesión hasta que el cierre de sesión llegue al caché

Su mayor problema potencial podría ser:

  • Si la aplicación/caja falla sin que el usuario pueda cerrar sesión, el estado del usuario en la base de datos permanecerá "conectado".

Depende de cómo se realiza la autenticación.Si almacena la fecha y hora del último inicio de sesión exitoso (cualquiera que sea el backend), tal vez pueda cambiar el esquema para almacenar un indicador "logged_in" y eso no implicará un costo de rendimiento adicional.(vale, no está nada limpio)

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