Pregunta

Creo que, en casi todos los casos, los datos de preferencia del usuario pueden almacenarse en una cookie con (casi) resultados igualmente buenos como cuando se usa la API de perfil de usuario. Las desventajas de usar cookies (para usuarios autenticados) parecen ser que una cookie se puede eliminar o expirar, en cuyo caso se perderán los datos de preferencia del usuario. Para usuarios anónimos, si los datos de preferencias deben persistir en las sesiones, se deberá utilizar una cookie incluso cuando se utilicen los Perfiles de usuario.

Entonces, ¿cuáles son algunas de las mayores ventajas / desventajas de usar los Perfiles de usuario o las cookies para almacenar las preferencias del usuario?

¿Fue útil?

Solución

Otra desventaja de mantener todos los datos de preferencia en las cookies es que todos esos datos deberán enviarse en cada solicitud del cliente y en cualquier respuesta del servidor cada vez que se realice un cambio en los datos. Si bien esto puede parecer un punto menor en la era de la banda ancha, sigue siendo una sobrecarga adicional. El uso de la API de Perfiles significa que los datos se almacenan en el servidor y que solo el navegador debe enviar una cookie de identificación de sesión.

Además, como usted indicó, para los usuarios anónimos si se eliminan las cookies, las preferencias de usuario que se encuentran en la base de datos de Perfiles ya no serán accesibles. Sin embargo, este no será el caso con los usuarios registrados de su sitio web. Si eliminan sus cookies, el servidor aún podrá recuperar sus preferencias de usuario la próxima vez que inicien sesión.

Otros consejos

Uno de los beneficios de registrarse en un sitio es que recuerda mis preferencias: si está almacenando esa información en una cookie en mi máquina en lugar de en su servidor, cuando ingreso a su sitio desde otra computadora, yo ' Tengo que configurar todas mis preferencias de nuevo: desde el punto de vista de la usabilidad, esto es bastante malo.

Para un usuario anónimo, almacenar las preferencias en una cookie puede parecer bastante razonable: no sabe quiénes son o si volverán, y como usted dice, no puede hacer ejercicio de una sesión a otra. a continuación, quiénes son, sin embargo, probablemente sea mejor almacenar algún tipo de token en la cookie y asignarlo a una tienda de preferencias en el servidor.

Además, he notado que diferentes navegadores tienen diferentes implementaciones para las cookies; por ejemplo, IE ahora puede recibir 50 cookies de un dominio (en comparación con las 20 originales), pero aún está limitado a un total de 4096 bytes para toda la colección de cookies (y anteriores): otros navegadores admitirán 4KB por cookie, en lugar de por dominio.

Las cookies tienen una longitud máxima limitada y utilizan una implementación más allá de su control (después de todo, son una característica del navegador de sus visitantes). Personalmente, no me gusta confiar en implementaciones de terceros desconocidas sobre las que no tengo ningún control y, si tengo que hacerlo, estoy tratando de usarlo de la manera más simple posible.

Entonces, de donde vengo, siempre almacenaba los datos del usuario en el servidor y simplemente pasaba una cookie que apuntaba a esa información.

Además de no confiar en el navegador con una gran cantidad de datos potencialmente grandes (que pueden perderse, almacenarse incorrectamente o no almacenarse en absoluto dependiendo no solo del navegador sino también, por ejemplo, alguna aplicación antivirus o lo que sea), esto tiene varias otras ventajas:

  • Está ocultando su implementación al usuario: si almacena los datos en la cookie, es visible para cualquiera y puede analizarse o modificarse a voluntad. Esto incluso puede hacer que los usuarios cambien las cookies a su gusto y, por lo tanto, lo obligue a mantener cosas a su alrededor, probablemente desee deshacerse de él solo porque algunos usuarios dependen de su implementación particular en cualquier momento.
  • Como las cookies se almacenan en texto plano, en máquinas compartidas, todos ya no pueden ver fácilmente todas las configuraciones realizadas por el usuario anterior, ni cambiarlas a voluntad.

Pero el punto más importante sigue siendo la desconexión de las implementaciones de navegador que no funcionan del todo (solo almacenar pequeños tokens es el caso de uso común y probado)

No olvide que una de las mayores desventajas del uso de cookies es que se pueden copiar, por lo que es peligroso almacenar información de autenticación en ellas.

No estoy familiarizado con la API de perfil de usuario, pero supongo que almacena la información en el servidor (?). Si ese es el caso, podría tener un problema si tiene muchos usuarios.

En general, tal vez la mejor solución es usar el Perfil de usuario si garantiza la persistencia de la información.

Tenga en cuenta que es posible escribir un ProfileProvider que conserve los datos del usuario en una cookie, para que pueda tener lo mejor de ambos mundos si determina que el estado que desea conservar es apropiado para las cookies (tamaño, seguridad, etc.) .

En realidad, no necesita conservar los datos de preferencia en las cookies para usuarios anónimos cuando utiliza el proveedor de perfiles ASP.NET. Simplemente almacene el ID de usuario actual (que es una cadena relacionada con la sesión de aspecto horrible) en una cookie. Esto se convierte en el ID de usuario anterior en visitas posteriores, y luego puede obtener la información del Perfil anterior y migrarla al Perfil actual, o incluso autenticarlos como ese Perfil anónimo anterior.

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