私はユーザーのパスワードを暗号化してdbに保存します。その後、ユーザーのログインに、ハッシュされたパスワードとプレーンパスワードを比較し、私はcrypto/bcrypt: hashedPassword is not the hash of the given password
エラーを取得しています。どうしましたか ?crypto/bcrypt:hashedPasswordは指定されたパスワードのハッシュではありません
func encryptPassword(password string) (string, error) {
bytePass := []byte(password)
hashedPassword, err := bcrypt.GenerateFromPassword(bytePass, bcrypt.DefaultCost)
if err != nil {
log.Printf("ERROR:EncryptPassword: %s", err.Error())
}
return string(hashedPassword), err
}
func (i *Impl) Register(user User) bool {
hashedPass, err := encryptPassword(user.Password)
if err != nil {
return false
}
user.Password = hashedPass
if err := i.DB.Create(&user).Error; err != nil {
log.Printf("ERROR:Register: %s", err.Error())
return false
}
return true
}
func (i *Impl) Login(email string, password string) (User, error) {
var user User
i.DB.Where("email = ?", email).First(&user)
err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
if err != nil {
log.Printf("ERROR:Login: %s", err.Error())
return User{}, err
}
return user, err
}
あなたは 'user.Password'の内容の例を提供できますか – Danilo
DBからのバイトを比較して、正しく更新されていて、何も変更されていないことを確認しましたか? – JimB
たとえば、 '$ 2a $ 10 $ rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e'というデータベースからのハッシュされたパスワードは、' 123456'から生成されます。次に、ハッシュされたパスワードとプレーンなパスワードを比較します。これは '123456'です@ダニロ@JimB –