如何在golang中匹配所有user_name和密码?

时间:2018-04-18 11:00:45

标签: go

使用结构,我将JSON表单中的数据保存到集合中,如下所示:

type SignUp struct {
 Id           int      `json:"_id" bson:"_id"`
 UserName     string   `json:"user_name" bson:"user_name"`
 EmailId         string   `json:"email_id" bson:"email_id"`
 Password    string   `json:"password" bson:"password"`
}
type SignUps []SignUp

使用函数

从mongodb集合中检索数据
func Login(c *gin.Context) {
 response := ResponseControllerList{}
 conditions := bson.M{}
 data, err := GetAllUser(conditions)
 fmt.Println(data)
 fmt.Println(err)
 Matching(data)
 return
}

func GetAllUser(blogQuery interface{}) (result SignUps, err error) {
 mongoSession := config.ConnectDb()
 sessionCopy := mongoSession.Copy()
 defer sessionCopy.Close()
 getCollection := mongoSession.DB("sign").C("signup")
 err = getCollection.Find(blogQuery).Select(bson.M{}).All(&result)
 if err != nil {
    return result, err
 }
 return result, nil
}

但是没有按键检索的数据如下所示: -

[{1 puneet puneet@gmail.com puneet} {2 Rohit abc@gmail.com puneet}]

问题是我要收集所有现有的EmailIdPassword 并将它们与用户输入的useridpassword进行匹配,如下所示: -

func Matching(data Signups){
  userid="abc@gmail.com"
  password="puneet"
  //match?
 }

如何将useridpasswordEmailIdPassword字段相匹配?

3 个答案:

答案 0 :(得分:0)

您可以提供if条件,以检查您的Matching功能上的用户ID或电子邮件是否为空:

....

if data.userid != "" {
    data.username = data.userid
} 

data.password

....

您可以为查询创建新结构,并使用它来创建Matching函数。

答案 1 :(得分:0)

    for _, signup := range data {
        if userId == signup.Id && password == signup.Password {
            println("Match!")
        }
    }

答案 2 :(得分:0)

这不是直接回答你的问题,但是非常重要。您似乎在数据库中以纯文本格式保存用户的密码。这非常粗心,您应该添加一些加密,如bcrypt:https://godoc.org/golang.org/x/crypto/bcrypt

当您添加了一些加密后,您的匹配将与所有给定的答案完全不同。这取决于使用的加密包。但请忽略其他答案。它们可能有效,但仅适用于纯文本密码。