AI Powered SaaS: Stripe + Auth + Billing + Deploy · Leçon

Réinitialisation du mot de passe et vérification de l’adresse e-mail

Créez des parcours sécurisés de récupération de compte et de vérification d’adresse e-mail à l’aide de jetons à usage unique, d’une expiration et d’e-mails transactionnels, afin que les utilisateurs puissent récupérer leur accès en toute sécurité.

Leçon 4 sur 413 étapes

Réinitialisation du mot de passe et vérification de l’adresse e-mail est une leçon AI Powered SaaS: Stripe + Auth + Billing + Deploy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Powered SaaS: Stripe + Auth + Billing + Deploy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Powered SaaS: Stripe + Auth + Billing + Deploy comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Why Reset & Verify?

Users forget passwords and mistype emails. A safe password reset flow lets them recover without support, and email verification confirms the address really belongs to them, cutting spam and fake accounts.

The Token Strategy

Both flows rely on a one-time token: a random, unguessable string emailed to the user. Possessing it proves control of the inbox.

import crypto from 'crypto';
const token = crypto.randomBytes(32).toString('hex');

Storing the Token Hashed

Never store the raw token. Hash it before saving so a database leak cannot be used to reset accounts. Compare hashes when the user returns.

const hash = crypto.createHash('sha256').update(token).digest('hex');
await prisma.resetToken.create({
  data: { userId, hash, expiresAt }
});

Adding Expiry

Tokens must expire — usually 15 to 60 minutes. Store an expiresAt timestamp and reject tokens past it.

const expiresAt = new Date(Date.now() + 30 * 60 * 1000);

Requesting a Reset

The user submits their email. Generate a token, save its hash, and email a link containing the raw token. Always respond the same way to avoid leaking which emails exist.

const link = process.env.APP_URL + '/reset?token=' + token;
await sendEmail(email, 'Reset your password', link);

Sending Transactional Email

Use a provider like Resend or SendGrid for reliable delivery. Keep the message short with a clear single action.

import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send({ to, subject, html });

Verifying the Token

When the user opens the link, hash the incoming token, look it up, and check it is unused and unexpired.

const hash = crypto.createHash('sha256').update(token).digest('hex');
const record = await prisma.resetToken.findFirst({
  where: { hash, expiresAt: { gt: new Date() }, usedAt: null }
});

Updating the Password

If valid, hash the new password and save it, then mark the token used so it cannot be replayed.

const pw = await bcrypt.hash(newPassword, 12);
await prisma.user.update({ where: { id: record.userId }, data: { password: pw } });
await prisma.resetToken.update({ where: { id: record.id }, data: { usedAt: new Date() } });

Email Verification Flow

Verification works the same way: on signup, email a token. When clicked, set emailVerified on the user and invalidate the token.

await prisma.user.update({
  where: { id }, data: { emailVerified: new Date() }
});

Preventing Abuse

Protect these endpoints:

  • Rate limit reset requests
  • Give identical responses for known and unknown emails
  • Allow only one active token per user

Best Practices

Build recovery securely:

  • Use random, hashed tokens with expiry
  • Send via a transactional email provider
  • Mark tokens used after one use
  • Rate limit and avoid email enumeration

Quick Check

Test your reset-flow knowledge.

Recap

You built account recovery:

  • Generate random tokens, store them hashed with expiry
  • Email links via a transactional provider
  • Verify, then update the password and mark the token used
  • Reuse the pattern for email verification and guard against abuse

Users can now safely recover and verify accounts.

Gratuit pour commencer

Apprends AI Powered SaaS: Stripe + Auth + Billing + Deploy avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
12
Leçons
48

Questions Fréquemment Posées

La leçon « Réinitialisation du mot de passe et vérification de l’adresse e-mail » est-elle gratuite ?

Oui — le texte complet de « Réinitialisation du mot de passe et vérification de l’adresse e-mail » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Powered SaaS: Stripe + Auth + Billing + Deploy, passe à CoddyKit PRO. Le cours AI Powered SaaS: Stripe + Auth + Billing + Deploy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Réinitialisation du mot de passe et vérification de l’adresse e-mail » ?

Créez des parcours sécurisés de récupération de compte et de vérification d’adresse e-mail à l’aide de jetons à usage unique, d’une expiration et d’e-mails transactionnels, afin que les utilisateurs… Tu pratiques AI Powered SaaS: Stripe + Auth + Billing + Deploy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Powered SaaS: Stripe + Auth + Billing + Deploy ?

Aucune expérience préalable n'est requise. AI Powered SaaS: Stripe + Auth + Billing + Deploy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Réinitialisation du mot de passe et vérification de l’adresse e-mail » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Powered SaaS: Stripe + Auth + Billing + Deploy ?

Oui. Chaque leçon AI Powered SaaS: Stripe + Auth + Billing + Deploy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Inscription des utilisateurs et hachage
  2. Connexion et génération de JWT
  3. Routes protégées et intergiciel
  4. Réinitialisation du mot de passe et vérification de l’adresse e-mail
← Retour à AI Powered SaaS: Stripe + Auth + Billing + Deploy