จะจับคู่รหัสผ่านเก่าที่ประดิษฐ์ได้อย่างไร?

ฉันกำลังพยายามทำตามคำแนะนำที่นี่ - Rails 3 / Devise: ไม่ได้สร้างเกลือรหัสผ่านอีกต่อไป

แต่มันไม่ทำงานเลย - ทั้ง valid_password? และ password_digest password_digest ได้รับวิธีการที่ได้รับการป้องกัน และ valid_password? ส่งคืนค่าว่าง

เมื่อผู้ใช้ของฉันเปลี่ยนรหัสผ่าน ฉันอนุญาตให้พวกเขาป้อนรหัสผ่านเก่า และหากตรงกับรหัสผ่านที่เข้ารหัสในฐานข้อมูล ฉันจะอัปเดตรหัสผ่านของผู้ใช้


person David    schedule 07.03.2012    source แหล่งที่มา
comment
คุณใช้ Devise เวอร์ชันใดอยู่? คุณใช้ตัวเข้ารหัสใดอยู่   -  person Rodrigo Flores    schedule 08.03.2012
comment
ฉันใช้ 1.4.2 - ฉันไม่แน่ใจว่ามันใช้ตัวเข้ารหัสอะไร คุณช่วยบอกฉันหน่อยว่าจะค้นหามันได้อย่างไรและใช้งานอย่างไร เพื่อที่ฉันจะได้เข้ารหัสผู้ใช้ที่ป้อนรหัสผ่านเก่าได้   -  person David    schedule 16.03.2012


คำตอบ (1)


เพื่อให้ผู้ใช้ป้อนรหัสผ่านเดิม เพียงเพิ่ม :current_password ในพารามิเตอร์ จากนั้นใช้ @user.update_with_password(params[:user]) เพื่ออัปเดตด้วยการตรวจสอบความถูกต้องของรหัสผ่านปัจจุบัน

<div class="field">
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %>
</div>
person Andy Wang    schedule 23.08.2013