我正在開發Rails 3.0應用程序,並使用OmniAuth + Identity進行身份驗證註冊。我已經實現了一個通過外鍵綁定到Identity模型的用戶模型,並且一切正常。現在,我想實現一個忘記密碼功能。OmniAuth +身份忘記密碼
給定用戶的電子郵件,我想給他們發送一封電子郵件,其中包含一個鏈接以重置密碼。該電子郵件包含與用戶關聯的隨機十六進制字符串。
現在,我該如何重置用戶的身份密碼?
在Identity數據庫表中,它存儲爲password_digest。我可以覆蓋這個嗎?
我正在開發Rails 3.0應用程序,並使用OmniAuth + Identity進行身份驗證註冊。我已經實現了一個通過外鍵綁定到Identity模型的用戶模型,並且一切正常。現在,我想實現一個忘記密碼功能。OmniAuth +身份忘記密碼
給定用戶的電子郵件,我想給他們發送一封電子郵件,其中包含一個鏈接以重置密碼。該電子郵件包含與用戶關聯的隨機十六進制字符串。
現在,我該如何重置用戶的身份密碼?
在Identity數據庫表中,它存儲爲password_digest。我可以覆蓋這個嗎?
事實證明這很簡單。只需覆蓋Identity表中現有的password_digest即可。使用BCrypt庫來創建password_digest:
require 'bcrypt'
...
class UsersController < ApplicationController
...
def update
@user = User.find(params[:id])
...
user_identity = Identity.find_by_email(@user.email)
unencrypted_password = params[:user][:password].to_s
password_digest = BCrypt::Password.create(unencrypted_password)
user_identity.password_digest = password_digest;
user_identity.save!
end
end