Şifremi unuttum sayfasıne bir form koy, mail adresi iste. Mail adresini alıp kontrol et, varsa random 50-60 hanelik bir kod üretip (bkz: hash) veritabanına mail adresiyle beraber kaydet (password-reset adında bir tablomuz olsun) sonra o mail adresine doğrulama sayfasına yönlendirecek bir linkle beraber gönder.

Link site.com/password-reset?token=randomkod gibi bir şey olacak yani.

password-reset sayfasında token'i GET ile alıp veritabanındakiyle karşılaştır eğer uyuşuyorsa yeni şifre oluşturma formunu göster. Kullanıcı şifresini post ettiğinde doğru ise veritabanındaki şifre kısmını güncelle ve son olarak password-reset tablosundaki o maile ait tüm token'ları sil (tekrar aynı link tıkladığında geçersiz olmalı, başka biri de bu linki kullanabilir).

Hatta token'lara 6-7 günlük süreler verebilirsin. Bu sayede yetkisiz erişimleridebir miktar engelleyebilirsin.