Lösenordsåterställning och e-postverifiering
Bygg säkra flöden för kontoåterställning och e-postverifiering med engångstoken, utgångstid och transaktionell e-post så att användarna tryggt kan återfå åtkomst.
Lösenordsåterställning och e-postverifiering är en gratis lektion i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.
Varför återställa och verifiera?
Användare glömmer lösenord och skriver fel e-postadresser. Ett säkert flöde för lösenordsåterställning låter dem återfå åtkomst utan support, och e-postverifiering bekräftar att adressen verkligen tillhör dem, vilket minskar spam och falska konton.
Strategin med token
Båda flödena bygger på en engångstoken: en slumpmässig, svårgissad sträng som skickas till användaren via e-post. Att ha den bevisar att användaren kontrollerar inkorgen.
import crypto from 'crypto';
const token = crypto.randomBytes(32).toString('hex');Lagra token hashad
Lagra aldrig den råa token. Hasha den innan den sparas, så att en databasläcka inte kan användas för att återställa konton. Jämför hashvärden när användaren återkommer.
const hash = crypto.createHash('sha256').update(token).digest('hex');
await prisma.resetToken.create({
data: { userId, hash, expiresAt }
});Lägga till utgångstid
Token måste upphöra att gälla – vanligtvis efter 15 till 60 minuter. Lagra en tidsstämpel i expiresAt och avvisa token som har löpt ut.
const expiresAt = new Date(Date.now() + 30 * 60 * 1000);Begära en återställning
Användaren skickar in sin e-postadress. Generera en token, spara dess hash och skicka en länk via e-post som innehåller den råa token. Svara alltid på samma sätt för att undvika att avslöja vilka e-postadresser som finns registrerade.
const link = process.env.APP_URL + '/reset?token=' + token;
await sendEmail(email, 'Reset your password', link);Skicka transaktionsbaserad e-post
Använd en leverantör som Resend eller SendGrid för tillförlitlig leverans. Håll meddelandet kort och ange en tydlig enda åtgärd.
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send({ to, subject, html });Verifiera token
När användaren öppnar länken ska ni hasha den inkommande token, slå upp den och kontrollera att den är oanvänd och inte har löpt ut.
const hash = crypto.createHash('sha256').update(token).digest('hex');
const record = await prisma.resetToken.findFirst({
where: { hash, expiresAt: { gt: new Date() }, usedAt: null }
});Uppdatera lösenordet
Om token är giltig ska ni hasha det nya lösenordet och spara det. Markera sedan token som använd, så att den inte kan återanvändas.
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() } });Flöde för e-postverifiering
Verifieringen fungerar på samma sätt: vid registrering skickar ni en token via e-post. När användaren klickar på länken anger ni emailVerified för användaren och ogiltigförklarar token.
await prisma.user.update({
where: { id }, data: { emailVerified: new Date() }
});Förhindra missbruk
Skydda dessa endpoints:
- Begränsa anropsfrekvensen för återställningsbegäranden
- Ge identiska svar för kända och okända e-postadresser
- Tillåt endast en aktiv token per användare
Bästa praxis
Bygg ett säkert återställningsflöde:
- Använd slumpmässiga, hashade token med utgångstid
- Skicka via en leverantör av transaktionsbaserad e-post
- Markera token som använd efter första användningen
- Begränsa anropsfrekvensen och undvik uppräkning av e-postadresser
Snabb kontroll
Testa era kunskaper om återställningsflöden.
Sammanfattning
Ni har byggt kontåterställning:
- Generera slumpmässiga token och lagra dem hashade med en utgångstid
- Skicka länkar via e-post genom en leverantör av transaktionsbaserad e-post
- Verifiera, uppdatera sedan lösenordet och markera token som använd
- Återanvänd mönstret för e-postverifiering och skydda mot missbruk
Användare kan nu säkert återställa åtkomst till och verifiera sina konton.
Lär dig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Lösenordsåterställning och e-postverifiering” gratis?
Ja – hela texten till ”Lösenordsåterställning och e-postverifiering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.
Vad lär jag mig i ”Lösenordsåterställning och e-postverifiering”?
Bygg säkra flöden för kontoåterställning och e-postverifiering med engångstoken, utgångstid och transaktionell e-post så att användarna tryggt kan återfå åtkomst. Ni övar på AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning?
Du behöver inga förkunskaper. Utbildningen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Lösenordsåterställning och e-postverifiering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektionen?
Ja. Varje AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Användarregistrering och hashing
- Inloggning och generering av JWT
- Skyddade routes och middleware
- Lösenordsåterställning och e-postverifiering