Restablecer contraseña de inicio de sesión en Flask
-
21-12-2019 - |
Pregunta
estoy usando el flask-login
biblioteca, y no he podido encontrar buenos tutoriales o documentación sobre cómo permitir que un usuario restablezca su contraseña a través de un correo electrónico.¿Qué dirección/recursos puedo buscar sobre cómo hacer esto?Una búsqueda exhaustiva en Google no reveló nada útil.
Solución
flask-login
no se encarga de reiniciar los correos electrónicos de contraseña y otras cosas similares. Solo está ahí para gestionar sesiones y galletas.
Debe usar Flask-Security
que agrega la funcionalidad de restablecimiento de contraseña y otras características de seguridad comunes relacionadas con el matraz. Flask-Security usa el inicio de sesión de matraz para manejar sesiones, pero agrega otras funciones en la parte superior para completar las funciones de seguridad:
Confirmación de correo electrónico
Si lo desea, puede requerir que los nuevos usuarios confirmen su dirección de correo electrónico. Flask-Security enviará un mensaje de correo electrónico a cualquier usuario nuevo con un Enlace de confirmación. Al navegar al enlace de confirmación, el usuario será iniciado sesión automáticamente. También hay vistas para que se reenvierta a un Enlace de confirmación a un correo electrónico dado si el usuario intenta usar Un token expirado o ha perdido el correo electrónico anterior. Enlaces de confirmación se puede configurar para caducar después de una cantidad de tiempo especificada.
Reset / recuperación de contraseña
Restablecimiento de contraseña y la recuperación está disponible para cuando un usuario olvida su o su contraseña. Flask-Security envía un correo electrónico al usuario con un enlace a una vista que pueden restablecer su contraseña. Una vez que la contraseña es RESET Se inicia sesión automáticamente y puede usar la nueva contraseña a partir de entonces. Los enlaces de restablecimiento de contraseña se pueden configurar para caducar después de un Cantidad de tiempo especificada.
Registro de usuario
Flask-Security viene empaquetado con una vista básica de registro de usuarios. Esta vista es muy simple y los nuevos usuarios solo necesitan suministrar un correo electrónico. Dirección y su contraseña. Esta vista puede ser reemplazada [sic] si su El proceso de registro requiere más campos.
Otros consejos
Lógica básica:
- Crear formulario de restablecimiento de contraseña con
email
campo. - Cuando el usuario envía el formulario, debe:
- revisa este correo electrónico en la base de datos
- generar una clave secreta aleatoria criptográfica no distinguida (la siguiente es solo la clave secreta)
- almacene esta clave, la marca de tiempo actual y el identificador de usuario en el caché o la base de datos
- enviarlo al correo electrónico o sms del usuario
- Cuando el usuario aplica una clave secreta (por ejemplo, con una URL o un formulario especial), debe:
- validarlo (existir, no caducado, no utilizado antes)
- obtener identificador de usuario
- eliminar o marcar como usada la clave secreta actual
- Proporcionar lógica para ingresar/generar una nueva contraseña.
La lógica para ingresar/generar contraseña puede ser diferente:
- inicie sesión como usuario y muestre el formulario para ingresar una nueva contraseña: clave de inicio de sesión única
- muestre el formulario para ingresar la contraseña y luego inicie sesión si es válido
- generar una nueva contraseña y enviarla al correo electrónico del usuario
- generar una nueva clave secreta para que el formulario ingrese una nueva contraseña y enviarla al correo electrónico del usuario
- genere una nueva clave secreta para aprobar el formulario, envíelo por SMS, muestre el formulario para ingresar una nueva contraseña y una clave secreta de aprobación y luego inicie sesión si es válida