Pregunta

Imaginemos un servicio impulsado por django que factura mensualmente a sus clientes. El propietario no quiere que sus clientes compartan la cuenta con personas que no pagaron. Por supuesto, entiende que algunos pueden querer trabajar en colaboración en una cuenta y no quieren restringir el uso de cuentas compartidas a la misma dirección IP.

¿Cómo permitirías iniciar sesión, con el mismo nombre de usuario / contraseña, no más de 3 personas al mismo tiempo con django?

Estaba pensando en implementar un contador en la clase de Usuario, pero realmente no sé qué tan buena es esta idea.

E.G:

Paul inicia sesión usando

Pregunta de bonificación: qué problemas puede implicar el inicio de sesión múltiple y qué medidas debo tomar para evitar conflictos entre usuarios de la cuenta.

¿Fue útil?

Solución

Puede usar cookies y almacenar un GUID dentro de esta cookie. Si un usuario no tiene un GUID, dale uno nuevo. De lo contrario, verifique el GUID en su cookie con el que está en su base de datos. Si es uno de los tres GUID asignados más recientemente, es un uso válido.

Ejemplo: El usuario inicia sesión, obtiene GUID A. Borra las cookies. Inicia sesión de nuevo, obtiene GUID B. Borra las cookies. Inicia sesión nuevamente, obtiene GUID C. Borra las cookies nuevamente. Inicia sesión de nuevo, obtiene GUID D. Todo válido. Incluso podría iniciar sesión nuevamente con una cookie existente que contenga el GUID B o C, pero si visita el GUID A, probablemente esté compartiendo la cuenta. (O usando cuatro o más navegadores web).

Ejemplo 2: El usuario 1 inicia sesión, obtiene el GUID A. El usuario 2 inicia sesión, obtiene el GUID B. El usuario 3 inicia sesión, obtiene el GUID C. El usuario 4 inicia sesión, obtiene el GUID D. En este momento, el GUID A no sería válido y usted patearía fuera usuario 1.

Para hacer esto, todo lo que necesita es hacer un seguimiento de los tres GUID más recientes que asignó al usuario, reemplazando el más antiguo con un nuevo GUID cada vez que el usuario haya borrado su cookie. Si verifica esto con cada solicitud web, efectivamente bloquearía a cada cuarto (y más) usuario.

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