Email OTP Göndermek İçin Nodemailer Alternatifi: 6 Aşamalı 2FA Sözleşmesi

Email OTP göndermek bir sağlayıcı problemi değil, kontrat problemidir. Nodemailer yerine başka bir hizmet kullanmayı düşünüyorsan, önce signup akışının neye ihtiyaç duyduğunu tanımla.

Kaynak şu: bir kullanıcı kaydolduğunda, sadece bir tane kısa ömürlü, hashlenmiş challenge oluştur ve sakla. Bu challenge'ı veritabanında bir hash, bir expiry timestamp ve teslimat denemesi için minimal state ile tut. Email servisi (Nodemailer, SendGrid, AWS SES, ne olursa olsun) bu challenge'ı göndermekten sorumlu; ama doğrulama kararını her zaman veritabanından ver, email yanıtından değil.

Bu yaklaşımın avantajı: sağlayıcıyı değiştirmek istediğinde, signup akışını dokunmadan bir adapter katmanını değiştir. Nodemailer'dan SendGrid'e geçmek, kodunda bir satır değişiklik gerektirmez.

Önemli bir detay: her üretilen kodu, sağlayıcı yanıtını ve mesaj gövdesini sonsuza kadar saklamayın. Bu sadece veri ayak izini büyütür, doğrulamayı iyileştirmez. "Bu OTP gönderildi mi?" sorusunu yanıtlamak için gereken minimum veriyi tut. Fatura da daha temiz kalır.

Yazının tam detayları için dev.to'daki orijinal çalışmaya göz at.

Kısacası: sağlayıcı seçiminden önce kontratını tasarla. Adapter pattern kullanırsan, sonra değiştirmek kolay olur.

konu hakkında tepkinizi verebilirsiniz