¿Debo detectar el dispositivo del usuario para el sistema "recordarme"? [cerrado]

-1

Estoy siguiendo solución # 1 de esta respuesta . Después de un tiempo, habrá algunas filas redundantes en la tabla. Supongamos esta tabla:

// cookies
+---------+-------------------------+------------------+------------+------------+
|   id    |         email           |     cookie       | date_time  |   device   |
+---------+-------------------------+------------------+------------+------------+
| int(11) |      varchar(50)        |   varchar(128)   |  int(11)   |            |
+---------+-------------------------+------------------+------------+------------+
| 1       | [email protected]     | ojer0f934mf2...  | 1467204523 |            |
| 2       | [email protected]      | ko4398f43043...  | 1467205521 |            |
| 3       | [email protected] | 34fjkg3j438t...  | 1467205601 |            |
| 4       | [email protected]      | 0243hfd348i4...  | 1467206039 |            |
+---------+-------------------------+------------------+------------+------------+

Por lo tanto, la columna email no es única y cada dispositivo tiene su propia fila.

Mi pregunta: ¿Cómo puedo completar la columna device ? ¿Incluso necesito detectar el dispositivo del usuario o debo manejarlo de otra manera?

¿Por qué necesito determinar los dispositivos? Desde que un usuario elimina las cookies de su navegador, mi sitio web los identifica como un nuevo usuario y crea una nueva fila para ellos en la tabla de arriba. Así que después de un tiempo, habrá algunas filas redundantes en la tabla.

Por ejemplo: Imagine peter tiene solo dos dispositivos (computadora portátil, teléfono) . Y tiene dos filas en la tabla de arriba. Elimina las cookies de su navegador e inicia sesión. ¿Qué sucede? Mi sitio web crea una nueva fila en la tabla de arriba. Ahora peter tiene 3 filas en la tabla arriba de (mientras que él solo tiene dos dispositivos) . Así que seguramente una de esas tres filas es redundante. Es por eso que necesito detectar dispositivos para eliminar filas redundantes.

    
pregunta stack 29.06.2016 - 15:38
fuente

1 respuesta

1

No puede detectar dispositivos de manera confiable, y tampoco necesita hacerlo. Solo use la marca de tiempo para eliminar rutinariamente sesiones que tienen más de X horas de antigüedad. Tenga en cuenta que está perfectamente bien tener datos redundantes en una mesa de trabajo como esta, que era su preocupación original.

Deberá hacerlo de todos modos, ya que las sesiones siempre deben terminar en el lado del servidor y del lado del cliente. Esto es importante para mitigar los efectos del robo de sesión.

Si X se vuelve muy grande, o es infinito (el usuario nunca se desconecta), esto podría convertirse en un problema. Sin embargo, le recomendaría que establezca un límite de tiempo incluso si el usuario marca "Recordarme". Creo que WordPress usa 14 días, y Facebook 1 año.

Pero realmente, realmente le recomendaría que use un marco existente para esto y no el rollo propio (si está trabajando en algo que debería usarse en producción). Si solo comete un error en su esquema de autenticación, puede abrir toda su aplicación web a todo el mundo. En situaciones como esa, es mejor atenerse a lo probado y verdadero.

    
respondido por el Anders 29.06.2016 - 17:00
fuente

Lea otras preguntas en las etiquetas