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.

¿Fue ú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:

  1. Crear formulario de restablecimiento de contraseña con email campo.
  2. Cuando el usuario envía el formulario, debe:
    1. revisa este correo electrónico en la base de datos
    2. generar una clave secreta aleatoria criptográfica no distinguida (la siguiente es solo la clave secreta)
    3. almacene esta clave, la marca de tiempo actual y el identificador de usuario en el caché o la base de datos
    4. enviarlo al correo electrónico o sms del usuario
  3. Cuando el usuario aplica una clave secreta (por ejemplo, con una URL o un formulario especial), debe:
    1. validarlo (existir, no caducado, no utilizado antes)
    2. obtener identificador de usuario
    3. eliminar o marcar como usada la clave secreta actual
    4. Proporcionar lógica para ingresar/generar una nueva contraseña.

La lógica para ingresar/generar contraseña puede ser diferente:

  1. inicie sesión como usuario y muestre el formulario para ingresar una nueva contraseña: clave de inicio de sesión única
  2. muestre el formulario para ingresar la contraseña y luego inicie sesión si es válido
  3. generar una nueva contraseña y enviarla al correo electrónico del usuario
  4. generar una nueva clave secreta para que el formulario ingrese una nueva contraseña y enviarla al correo electrónico del usuario
  5. 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top