Redefinição de senha de login do Flask
-
21-12-2019 - |
Pergunta
estou usando o flask-login
biblioteca, e não consegui encontrar nenhum bom tutorial ou documentação sobre como permitir que um usuário redefina sua senha por e-mail.Que direção/recursos posso consultar sobre como fazer isso?Uma pesquisa completa no Google não revelou nada de útil.
Solução
flask-login
não cuida de e-mails de redefinição de senha e outras coisas semelhantes.Está lá apenas para gerenciar sessões e cookies.
Você deveria usar Flask-Security
que adiciona funcionalidade de redefinição de senha e outros recursos comuns relacionados à segurança ao flask.Flask-Security usa flask-login para lidar com sessões, mas adiciona outros recursos para completar os recursos de segurança:
Confirmação de e-mail
Se desejar, você pode exigir que os novos usuários confirmem seus endereços de e-mail.A segurança do Flask enviará uma mensagem de email para qualquer novo usuário com um link de confirmação.Ao navegar para o link de confirmação, o usuário será logado automaticamente.Há também uma visualização para renderizar um link de confirmação para um determinado email se o usuário tentar usar um token expirado ou tiver perdido o email anterior.Os links de confirmação podem ser configurados para expirar após uma quantidade especificada de tempo.
Redefinição/recuperação de senha
A redefinição de senha e a recuperação está disponível para quando um usuário esquece sua senha.A segurança do Flask envia um email para o usuário com um link para uma visualização que eles podem redefinir sua senha.Depois que a senha é redefinida, ela é conectada automaticamente e pode usar a nova senha a partir de então.Os links de redefinição de senha podem ser configurados para expirar após uma quantidade especificada de tempo.
Cadastro de usuário
Flask-Security vem com uma visualização básica de registro de usuário.Essa visualização é muito simples e novos usuários precisam fornecer apenas um endereço de e -mail e sua senha.Essa visualização pode ser substituída [sic] se o seu processo de registro exigir mais campos.
Outras dicas
Lógica básica:
- Crie um formulário de redefinição de senha com
email
campo. - Quando o usuário envia o formulário, você deve:
- verifique este e-mail no banco de dados
- gerar chave secreta aleatória criptografada indistinta (próxima apenas chave secreta)
- armazene esta chave, carimbo de data/hora atual e identificador de usuário no cache ou banco de dados
- envie para o e-mail ou sms do usuário
- Quando o usuário aplica uma chave secreta (por exemplo, com URL ou formulário especial), você deve:
- validá-lo (existir, não expirado, não usado antes)
- obter identificador de usuário
- excluir ou marcar como chave secreta atual usada
- forneça lógica para inserir/gerar nova senha.
A lógica para inserir/gerar senha pode ser diferente:
- faça login do usuário e mostre o formulário para inserir a nova senha - chave de login única
- mostre o formulário para inserir a senha do que o login, se válido
- gerar nova senha e enviá-la para o e-mail do usuário
- gerar nova chave secreta para o formulário inserir a nova senha e enviá-la para o e-mail do usuário
- gerar nova chave secreta para aprovar o formulário, enviá-lo via sms, mostrar o formulário para inserir a nova senha e chave secreta de aprovação e fazer login se for válido