Estoy haciendo una aplicación web (MERN stack) y quiero dar varios usos gratuitos diarios al usuario incluso si no está logueado. No quiero forzar al usuario a registrarse para probar la aplicación, pero tengo que poner un límite al uso gratis ya que el uso de la aplicación me repercutirá en costes a mi.
El problema al que me enfrento es
1/ Como registrar al usuario anónimo.
De momento lo que estoy haciendo es que la aplicación detecte si el usuario no está logeado. Si no lo está le genera un "usuario anónimo" con una id que le proporciono. Esa id se envia al servidor que le proporciona un token cifrado con expiración de 24h. Es un token igual que el que usan los usuarios logeados y por tanto confiere permiso para usar la app. El usuario no podría generar nuevos token de por sí porque la clave para cifrar está en el servidor.
(Problema sin resolver) 2/ Qué hacer si el usuario anónimo borra sus datos de navegación
Esta id y token anónimos se almacenan en almacenamiento local y/o cokies, pero si el usuario es un poco avispado y borra los datos en el navegador, la aplicación detectará que no está logeado y le proporcionará una nueva id y token. Esto no se como resolverlo. Lo único que se me ocurre es usar la IP del usuario y validar si ya se le proporcionó un token con antelación, pero no sé si esto es posible/legal/viable. Y aún así tendría sus limitaciones, ya que la IP puede cambiar (aunque eso me preocupa menos, me parece más dificil de abusar)
¿Cómo lo suelen hacer las web en general? ¿O simplemente toca tragar con que algunos usuarios sean listos y "abusen" del sistema así?