2010-09-24 6 views
2

Le flux est:Envoyer un message à l'utilisateur pour le mot de passe réinitialiser

  1. utilisateur entre l'adresse e-mail
  2. après soumettre, un email est envoyé à l'utilisateur
  3. Le courriel contiendra un lien qui prendra la utilisateur à une page de réinitialisation du mot de passe.

Maintenant, comment puis-je récupérer l'ID de l'utilisateur en fonction de l'adresse e-mail et le chiffrer? Alors quel devrait être le lien? Comme, ce que je veux, c'est récupérer l'ID utilisateur puis le chiffrer d'une manière ou d'une autre afin que le lien ne contienne pas l'ID réel et que ce lien conduise l'utilisateur à une page qui aura des zones de texte pour réinitialiser le mot de passe. Je suis juste confus comment s'y prendre.

Aussi est-ce la façon sécurisée? Pour réinitialiser un mot de passe comme celui-ci?

Répondre

13

Je crée généralement une nouvelle table dans la base de données:

PasswordresetRequest avec les champs suivants:

  • Id: Guid - Id de la demande de réinitialisation de mot de passe.
  • accountid: string - nom d'utilisateur utilisateur
  • Créé: DataTime - horodatage de réinitialisation de mot de passe ont été créés

Flow est la suivante:

  1. réinitialisation de mot de passe de la demande de l'utilisateur sur le site Web.
  2. Un nouvel enregistrement est créé dans la table PasswordresetRequest.
  3. Un e-mail contenant un lien vers la page de réinitialisation de mot de passe avec l'ID de demande de mot de passe comme paramètre de demande est envoyé à l'utilisateur.
  4. L'utilisateur clique sur le lien dans l'email qui lui envoie la page de réinitialisation du mot de passe.
  5. Demande de mot de passe si récupérée de la base de données à partir du paramètre de demande. Si la requête peut être trouvée ou si la requête n'est pas plus ancienne que par exemple 12 heures un formulaire est présenté à l'utilisateur où il peut entrer un nouveau mot de passe.

Ceci est assez simple à mettre en œuvre et est assez sécurisé pour la plupart des sites.

+0

Très bien écrit, merci – Kjensen

1

Il existe plusieurs façons d'y parvenir. Si votre souci majeur est la sécurité, vous pouvez envoyer un lien contenant un paramètre guid que vous créez et stockez sur votre terminal (dans une table db, un fichier ou tout ce qui vous convient) avec l'identifiant utilisateur associé. Lorsque la demande de réinitialisation du mot de passe arrive, vous vérifiez le guid et regardez s'il y a une valeur correspondante dans votre fichier/fichier/quoi que ce soit et passez à la réinitialisation du mot de passe. N'oubliez pas de supprimer le guid de votre stockage pour éviter l'utilisation multiple du même lien.

Questions connexes