注册用户后,我尝试使用相同的密码登录,但由于错误而无法登录。我通过加密密码和普通密码来比较函数。但我无法登录。
type request struct {
PhoneNumber string `json:"phone_number"`
Password string `json:"password"`
}
var body request
if err := c.BodyParser(&body); err != nil {
return c.Status(fiber.StatusUnprocessableEntity).SendString("Wrong credentials.")
}
var user model.User
err := model.DB.Where(model.User{PhoneNumber: body.PhoneNumber}).First(&user)
if err.Error != nil {
return c.Status(fiber.StatusUnprocessableEntity).SendString("Wrong credentials.")
}
matched := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(body.Password))
//matched := CheckPasswordHash(body.Password, user.Password)
fmt.Println(bcrypt.CompareHashAndPassword([]byte("$2a$14$AphYClfW8V1HZh4.6kSD1OpkTzvS9dTc/1qgKesbCUW5.9BMDmzMW"), []byte("123456")))
//check := CheckPasswordHash(body.Password, user.Password)
fmt.Println(matched)
fmt.Println("Hash pass: "+user.Password)
fmt.Println("Raw pass: "+body.Password)
fmt.Println(matched)
if matched != nil {
return c.Status(fiber.StatusUnprocessableEntity).SendString("Wrong credentials2.")
}
字符串
我也打印我的哈希和普通密码来检查。但我都通过了下面是我的控制台打印:
crypto/bcrypt: hashedPassword is not the hash of the given password
crypto/bcrypt: hashedPassword is not the hash of the given password
Hash pass: $2a$14$AphYClfW8V1HZh4.6kSD1OpkTzvS9dTc/1qgKesbCUW5.9BMDmzMW
Raw pass: 123456
!exclude .idea
型
请帮助我,或者如果你有一个替代的方法来加密密码,并与普通密码比较,请让我知道。
2条答案
按热度按时间biswetbf1#
我曾经偶然发现这个问题,在看到你的散列密码后
字符串
注意正斜杠,
我100%确定这个问题和我的一样。
这是因为您从已经加密密码加密密码,换句话说,两次加密或更多。
5kgi1eie2#
最近我遇到了类似的问题,后来我发现我的问题是mysql数据库密码字段被限制为vchar(30),,在我改变大小后得到了它的工作