tutorial rails hacer gema current_user create como ruby-on-rails devise

ruby on rails - rails - Cómo verificar la contraseña de un usuario en Devise



gema devise (5)

Tengo un problema al hacer coincidir la contraseña del usuario con el diseño de la gema en los rieles. Contraseña de usuario almacenada en mi db que es encrypted_password y estoy tratando de encontrar al usuario por contraseña, pero no entiendo cómo hacer coincidir la contraseña del formulario y la contraseña cifrada en mi db.

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


Usar métodos de cálculo

Devise le proporciona métodos integrados para verificar la contraseña de un usuario :

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

Para Rails 4+ con Strong Params , puedes hacer algo como esto:

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


Creo que el mejor será este

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


Creo que esta es una forma mejor y más elegante de hacerlo:

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

El otro método donde se genera el resumen de la instancia del usuario me daba errores de método protegido.


Sugeriría esto

user = User.where("email=? OR username=?", email_or_username, email_or_username).first.valid_password?(user_password)


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

@joshaidan es una respuesta verdadera