[ruby-on-rails] 如何在Devise中驗證用戶的密碼


Answers

使用設計方法

Devise為您提供驗證用戶密碼的內置方法

user = User.find_for_authentication(email: params[:user][:email])

user.valid_password?(params[:user][:password])

對於Strong Params的Rails 4+ ,你可以這樣做:

def login
  user = User.find_for_authentication(email: login_params[:email])

  if user.valid_password?(login_params[:password])
    user.remember_me = login_params[:remember_me]
    sign_in_and_redirect(user, event: :authentication)
  end
end

private
def login_params
  params.require(:user).permit(:email, :password, :remember_me)
end
Question

我遇到了一個問題,在rails中使用devise gem來匹配用戶密碼。 用戶密碼存儲在我的數據庫這是encrypted_pa​​ssword,我試圖通過密碼找到用戶,但我不明白如何在我的數據庫中匹配來自窗體和encrypted_pa​​ssword的密碼。

User.find_by_email_and_password(params[:user][:email], params[:user][:password])



user = User.find_by_email_and_password(params[:user][:email])
user.valid_password?(params)

@ joshaidan是真實的答案




Related