首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何匹配所有的user_name和密码在高丽?

如何匹配所有的user_name和密码在高丽?
EN

Stack Overflow用户
提问于 2018-04-18 11:00:45
回答 3查看 781关注 0票数 0

使用一个结构,我将数据保存在JSON表单中,如下所示:

代码语言:javascript
运行
复制
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集合中检索数据。

代码语言:javascript
运行
复制
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
}

但检索到的数据没有其键,如下所示:

代码语言:javascript
运行
复制
[{1 puneet puneet@gmail.com puneet} {2 Rohit abc@gmail.com puneet}]

是指我想收集所有现有的EmailIdPassword,并将它们与用户输入的useridpassword匹配,功能如下:-

代码语言:javascript
运行
复制
func Matching(data Signups){
  userid="abc@gmail.com"
  password="puneet"
  //match?
 }

如何将useridpasswordEmailIdPassword字段相匹配?

EN

回答 3

Stack Overflow用户

发布于 2018-04-18 13:56:13

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

当您添加了一些加密,您的匹配将是非常不同的所有给定的答案。这取决于使用的加密包。但请不要理会其他的答案。它们可能有效,但只适用于纯文本密码。

票数 1
EN

Stack Overflow用户

发布于 2018-04-18 11:22:35

您可以提供一个if条件来检查用户is或电子邮件在Matching函数上是否为空,例如:

代码语言:javascript
运行
复制
....

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

data.password

....

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

票数 0
EN

Stack Overflow用户

发布于 2018-04-18 11:27:29

代码语言:javascript
运行
复制
    for _, signup := range data {
        if userId == signup.Id && password == signup.Password {
            println("Match!")
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49898052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档