我有这段代码:
u:= models.Users {}
u = u.FindByEmail(login.Email)
密码:= []字节(login.Password)
hashedPassword,错误:= bcrypt.GenerateFromPassword(密码,bcrypt.DefaultCost) if err!= nil { 恐慌(ERR) }
err = bcrypt.CompareHashAndPassword(hashedPassword,[] byte(u.Password)) fmt.Println(ERR)
我最终收到此错误:crypto / bcrypt:hashedPassword不是给定密码的哈希值
但是我之前保存的模型与“admin”具有相同的哈希值,但是当我运行我的应用程序时,它告诉我它不相等。
答案 0 :(得分:5)
仔细阅读docs。
CompareHashAndPassword将bcrypt哈希密码与其可能的纯文本等效项进行比较。成功时返回nil,或者失败时返回错误。
基本上,它是说你应该将你存储的哈希与纯文本密码进行比较。
你可能想要:u := models.Users{}
u = u.FindByEmail(login.Email)
plainPassword := []byte(login.Password)
// Assumes that u.Password is the actual hash and that you didn't store plain text password.
err = bcrypt.CompareHashAndPassword([]byte(u.Password), plainPassword)
fmt.Println(err)