go - 如何在 golang 中匹配所有用户名和密码?

标签 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 字段匹配?

最佳答案

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

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

关于go - 如何在 golang 中匹配所有用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49898052/

相关文章:

go - 我不能在golang中使用变量进行时间计算吗?

go - 使用 Apollo Client 和 graphql-go 的 Graphql 查询错误为 'Unknown type Int'

go - Go2从一种类型映射到另一种类型

xml - 在 Golang 中编码 XML : field is empty (APPEND doesn't work? )

json - 如何在 GJSON 中循环 slice

json - 如何在 Golang 中发送硬编码的复杂 json 响应

linux - 从 Go 中的列表中打印列表。循环故障

stored-procedures - 通过 Go/Golang 使用 ODBC 的存储过程

golang 从接口(interface)获取值{}

go - 马提尼酒中处理程序的所谓顺序是什么?