0

何らかの理由で、認証が失敗します。ただし、ハッシュをstdoutに印刷すると、同じになります。誰かが何が悪いのか考えがありますか?

if File.exists?(passwdFile)  
    File.open("#{passwdFile}",'r').each do |account|
      @account = account.split(':')
      usernameCheck = @account[0] # Stored username
      passwordCheck = @account[1] # Stored hashed password
      if username == usernameCheck
        # Create hash for given password to compare againts our stored one.
        password_hash = BCrypt::Engine.hash_secret(password, password_salt)
        puts "#{password_hash}"
        puts "#{passwordCheck}"
        if passwordCheck == password_hash
          @log.info 'Successfull authentication'
          return true

パスワードファイルは次のようになります。

bob:$2a$10$1xNjCZxjv0R06qUm1lQEEeZ1uKuZ9ELQIkT2h5/TxCI9eHDurr.dW
4

1 に答える 1

1

によって返される行にFile#eachは、行の終わりに改行が含まれているため、passwordCheck変数には末尾の改行がありますが、bcryptで生成されたハッシュにはありません。

あなたはで改行を削除することができますchomp

于 2012-07-11T07:41:35.287 に答える