0

Web サイトに「パスワードの変更」機能を実装しようとしています。

私のuser.rbには次のものがあります

before_save :encrypt_password

  def encrypt_password
    self.encrypted_password = encrypt(password)
  end

  def encrypt
    string
  end

  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def encrypt_password
    self.salt = make_salt unless has_password?(password)
    self.encrypted_password = encrypt(password)
  end

  def encrypt(string)
    secure_hash("#{salt}--#{string}")
  end

  def make_salt
    secure_hash("#{Time.now.utc}--#{password}")
  end

  def secure_hash(string)
    Digest::SHA2.hexdigest(string)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)
    return nil if user.nil?
    return user if user.has_password?(submitted_password)
 end

アカウントを作成するとき、ユーザーは名前、電子メール、パスワード、および password_confirmation を入力する必要がありますが、Rails コンソールに移動してテーブルを検索すると、 password と password_confirmation の代わりにencrypted_pa​​sswordが含まれています。

ユーザーからの入力を取得すると(フォームから渡されます)、次のことを行いました。

 @user.update_attributes(:password => params[:password][:password], :password_confirmation => params[:password][:password_confirmation])
 @user.save

しかし、これは機能していません!古いパスワードを復号化し、新しいパスワードを暗号化して更新する必要があるのだろうか...何か洞察はありますか? 御時間ありがとうございます!

4

1 に答える 1

0

私があなたなら、すでに作成されているものを使用して、次のことを行います。

真正 または

デバイス

于 2012-06-21T21:57:49.610 に答える