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

Hiç yorum yok: