반응형
Devise에서 사용자의 비밀번호를 확인하는 방법
레일에서 devise gem을 사용하여 사용자 비밀번호를 일치시키는 데 문제가 있습니다. 사용자 암호가 encrypted_password이고 암호로 사용자를 찾으려고하는데 db의 암호와 암호화 암호를 일치시키는 방법을 이해하지 못합니다.
User.find_by_email_and_password(params[:user][:email], params[:user][:password])
나는 이것이 더 좋고 더 우아한 방법이라고 생각합니다.
user = User.find_by_email(params[:user][:email])
user.valid_password?(params[:user][:password])
사용자 인스턴스에서 다이제스트를 생성하는 다른 방법은 보호 된 메서드 오류를 제공하는 것입니다.
Devise 방법 사용
Devise는 사용자의 비밀번호를 확인하는 기본 제공 방법을 제공 합니다 .
user = User.find_for_authentication(email: params[:user][:email])
user.valid_password?(params[:user][:password])
들어 강력한에 Params와 레일 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
이거 더 좋을 것 같아요
valid_password = User.find_by_email(params[:user][:email]).valid_password?(params[:user][:password])
user = User.find_by_email_and_password(params[:user][:email])
user.valid_password?(params[:user][:password])
@joshaidan은 진정한 대답입니다.
나는 이것을 제안 할 것이다.
user = User.where("email=? OR username=?", email_or_username, email_or_username).first.valid_password?(user_password)
참고 URL : https://stackoverflow.com/questions/4320921/how-to-verify-a-users-password-in-devise
반응형
'developer tip' 카테고리의 다른 글
"this"는 맵 함수 Reactjs 내부에서 정의되지 않았습니다. (0) | 2020.08.29 |
---|---|
C / C ++ 매크로의 쉼표 (0) | 2020.08.29 |
Ruby에서 기존 해시에 추가하는 방법 (0) | 2020.08.29 |
glyphicons-halflings-regular.woff2 찾을 수 없음에 대한 오류를 제거하는 방법 (0) | 2020.08.29 |
APNS 장치 토큰이 생성되면 변경됩니까? (0) | 2020.08.29 |