使用一个结构,我将数据保存在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}]是指我想收集所有现有的EmailId和Password,并将它们与用户输入的userid和password匹配,功能如下:-
func Matching(data Signups){
userid="abc@gmail.com"
password="puneet"
//match?
}如何将userid和password与EmailId和Password字段相匹配?
发布于 2018-04-18 13:56:13
这并不是直接回答您的问题,但是非常很重要。似乎您正在将用户的密码以纯文本形式保存在数据库中。这非常粗心,您应该添加一些加密,比如bcrypt:https://godoc.org/golang.org/x/crypto/bcrypt。
当您添加了一些加密,您的匹配将是非常不同的所有给定的答案。这取决于使用的加密包。但请不要理会其他的答案。它们可能有效,但只适用于纯文本密码。
发布于 2018-04-18 11:22:35
您可以提供一个if条件来检查用户is或电子邮件在Matching函数上是否为空,例如:
....
if data.userid != "" {
data.username = data.userid
}
data.password
....您可以为查询创建新的结构,并使用它创建Matching函数。
发布于 2018-04-18 11:27:29
for _, signup := range data {
if userId == signup.Id && password == signup.Password {
println("Match!")
}
}https://stackoverflow.com/questions/49898052
复制相似问题