Necesito proporcionar a los clientes de la tienda una herramienta para verificar el estado de sus pedidos de reparación.
Los clientes no tienen un usuario o contraseña. Son solo un registro en la base de datos. Sin embargo, tengo que darles una forma de iniciar sesión en la página web y verificar su estado (listo o no). Forzar entonces a registrarse no es una opción.
Vine con esta idea:
- Se le solicita al usuario su dirección de correo electrónico
- El sistema verifica si este correo electrónico está registrado en la base de datos, genera un hash y envía un url especial por correo electrónico con el hash.
- El usuario verifica el correo electrónico y va a esta dirección
- Cuando el sistema recibe una solicitud de verificación de dirección especial si el hash está en la base de datos y recupera el id_usuario
- Si está presente, ¡voilá! Hola, John Doe Su pedido # 3454364 está listo para ser recogido
El algoritmo de generación de hash sería.
SELECT clients set hash = SUBSTRING(PASSWORD(UUID()), 2);
El hash / contraseña está salted y Bcrypt (ed) en el servidor.
Podría agregar un tiempo de espera (hash válido por 1 día o algo así)
¿Hay algo horriblemente mal con esta idea?
ACTUALIZACIÓN: Se corrigió la redacción para que sea menos confuso.
¿Qué factor de trabajo debo usar para Bcrypt? Parece que la idea general es aumentar el número hasta que demore ~ 1 segundo.
Me gusta la salida de PASSWORD de MySQL para la generación de hash porque es muy amigable con url. Pero esa es realmente la única razón. ¿Alguna otra sugerencia?