使用结构,我将 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
字段匹配?
最佳答案
这不是直接回答您的问题,但仍然非常重要。似乎您在数据库中以纯文本形式保存用户的密码。这是非常粗心的,你应该添加一些像 bcrypt 这样的加密:https://godoc.org/golang.org/x/crypto/bcrypt
当您添加了一些加密后,您的匹配将与所有给定的答案完全不同。这取决于使用的加密包。但是请忽略其他答案。它们可能有效,但仅适用于纯文本密码。
关于go - 如何在 golang 中匹配所有用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49898052/