小编lea*_*age的帖子

如何验证密码

在此代码中,第一个函数Findaccount()将在数据库中查找电子邮件地址和以哈希形式存在的密码。所以CompareHashAndPassword()比较哈希和密码。

现在在handler.go文件中,我调用loginData()了一个允许用户登录的函数。我在这里遇到了问题。我调用了database.Findaccount(email, password, hash)函数,但它只是验证电子邮件地址,不验证 正确的密码,并给我false消息。

但是如果我这样调用函数database.Findaccount(email, "1234", hash),它会同时验证电子邮件和密码。

如何解决这个问题,因为我将无法记住每个密码。

数据库

func Findaccount(myEmail, myPassword, hash string) bool {
    collection := Connect.Database("WebApp2").Collection("dataStored")
    if err := collection.FindOne(context.TODO(), bson.M{"email": myEmail}).Decode(&Account); err != nil {
        fmt.Println("Enter the correct email or password")
    }
    err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(myPassword))
    return err == nil
}
Run Code Online (Sandbox Code Playgroud)

处理程序

func HashPassword(password string) (string, error) {
    bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
    return string(bytes), err
}

func loginData(w http.ResponseWriter, …
Run Code Online (Sandbox Code Playgroud)

passwords go

0
推荐指数
1
解决办法
70
查看次数

标签 统计

go ×1

passwords ×1