ben
OMÜ , Bilgisayar Mühendisliği, 13'
7 Kasım 2016 Pazartesi
devise manuel password
Bilindiği üzere rails üzerinde devise kurup uye olduğumuzda şifremiz arkaplanda kriptolanarak kaydolur. Oturum açma işleminde girilen şifreyi kendi bunyesinde karşılaştırarak aynı olup olmadığına bakar.
Bir koşuldan dolayı girilen şifreyi manuel olarak veritabanındakiyle aynı olup olmadığını kontrol ettirmem gerekti.
Ya veri tabanındaki şifreyi çözdürmem gerekiyordu, yada girdiğim şifreyi devise'ın şifrelediği gibi şifrelemem gerekiyordu.
İlkini yapmak zor, devise' ın guvenlik politikasına ters sanırım, ikincisini biraz ugraşmayla buldum :)
// @db_user: veritabanındaki kullanıcım
bcrypt = BCrypt::Password.new(@db_user.encrypted_password)
//@user: formdan gelen kullanıcım
password = BCrypt::Engine.hash_secret("#{@user.password}#{resource.class.pepper}", bcrypt.salt)
her iki şifreyi karşılaştırmak için formdan gelen şifreyi devise'ın şifrelediği gibi şifreleyip string ifadeye çevirdikten sonra kontrol edebildim.
bcrypt.to_s == password.to_s ? true: false
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder