为了账号安全,请及时绑定邮箱和手机立即绑定

使用 mongodb 更新哈希密码

使用 mongodb 更新哈希密码

Go
撒科打诨 2022-07-04 16:28:44
我正在尝试更新我的用户文档以更改密码,但是当我将 bcrypt 哈希密码传递为时,mongodb 会忽略字段密码$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a如果我删除第一个$工作。我的更新功能func (r Repo) Update(id string, updUsr interface{}) (User, error) {    // uid work    filter := bson.M{"_id": bson.M{"$eq": uid}, "deleted_at": nil}    update := []bson.D{        {primitive.E{            Key:   "$set",            Value: updUsr,        }},        {primitive.E{            Key: "$addFields",            Value: bson.D{primitive.E{                Key:   "modified_at",                Value: time.Now(),            }},        }},    }    res := r.col.FindOneAndUpdate(        r.ctx,        filter,        update,    )    if res.Err() != nil {        // err    }    // decode work    return u, nil}我的更新函数调用// doesn't workupdPwd := password{    Password: "$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",}// working version updPwd := password{    Password: "2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",}_, err = us.Update(uid, updPwd)if err != nil {    // err}我不知道如何将我的哈希变量传递给 mongodb,实际上只是删除了我的密码密钥,因为我处理的密码是一个空值,如果我删除了第一个$标志,我的更新就成功了。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

在更新操作中,以美元符号开头的字符串值$被视为变量引用并替换为相应的值。

您可能需要使用$literal运算符将该字符串视为值而不是变量。


查看完整回答
反对 回复 2022-07-04
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信