Mevcut bir uygulamayı, kurulmuş bir kullanıcı tabanı ile sürdürürsünüz. Zamanla, mevcut şifre karma tekniğinin modası geçmiş olduğuna ve iyileştirilmesi gerektiğine karar verilir. Ayrıca, UX nedenleriyle, mevcut kullanıcıların şifrelerini güncellemeye zorlanmasını istemiyorsunuz. Şifrelerin tamamen güncellenmesinin tamamı ekranın arkasında gerçekleşmelidir.
Aşağıdakileri içeren kullanıcılar için 'basit' bir veritabanı modeli düşünün:
- İD
- E-posta
- Parola
Kişi böyle bir gereksinimi çözmek için nasıl dolaşıyor?
Mevcut düşüncelerim:
- uygun sınıfta yeni bir karma yöntemi oluşturun
- Ek bir şifre alanı tutmak için veritabanındaki kullanıcı tablosunu güncelle
- Bir kullanıcı eski parola karmaşasını kullanarak başarılı bir şekilde oturum açtığında, ikinci parola alanını güncelleştirilmiş karma ile doldurun.
Bu beni ve şifre karma değerlerini güncellemeyen ve bu nedenle her ikisini de kontrol etmeye zorlanacak kullanıcılar arasında ayrım yapamayacağıma dair sorun çıkarıyor. Bu korkunç derecede kusurlu görünüyor.
Ayrıca, bu temelde, eski karma tekniğin, her bir kullanıcı şifresini güncelleyene kadar süresiz olarak kalmaya zorlanabileceği anlamına gelir. Sadece o anda eski karma denetimini kaldırmaya başlayabilir ve gereksiz veritabanı alanını kaldırabilirim.
Burada esasen bazı tasarım ipuçlarını arıyorum, çünkü şu anki 'çözümüm' kirli, eksik ve ne olmasın, ancak olası bir çözümü tanımlamak için gerçek kod gerekiyorsa, herhangi bir dili kullanmaktan çekinmeyin.