【问题标题】:Mean stack: Bcrypt is not hashing my password平均堆栈:Bcrypt 没有对我的密码进行哈希处理
【发布时间】:2018-11-30 15:33:52
【问题描述】:

连接工作正常,我可以等发布一个新用户,编辑他们。现在我想使用 bcrypt 来“加密”我的 mongoDB 中的密码。我做错了什么?

在我的 app.js 文件中

我确实有“ var bcrypt = require('bcrypt'); ”我也参考猫鼬,表达和一切应有的东西

代码:

app.post('/api/user', (req, res) => {

    res.redirect('http://localhost:4200/');

    var newUserData = { username: req.body.username, password: req.body.password, mail: req.body.mail, role: "user" };

    const saltRounds = 10;
    var hash = bcrypt.hashSync(newUserData.req.body.password, saltRounds);

    bcrypt.compareSync(newUserData.req.body.password, hash);


    var user = new User(newUserData, function(err) {
    });

    user.save();
});

【问题讨论】:

  • newUserData.req.body.password 怎么办? newUserData 好像没有密钥 req
  • 我不知道我只是在尝试

标签: javascript node.js express encryption mean-stack


【解决方案1】:

您忘记将新生成的hash 分配给该用户的密码。它不会自动为您执行此操作。

您应该在获得hash 之后和创建用户对象之前执行类似的操作。

var hash = bcrypt.hashSync(newUserData.password, saltRounds);

newUserData.password = hash;

另外,像这样在此处调用bcrypt.compareSync 毫无意义,您可能应该使用异步版本以防散列,因为该操作非常昂贵并且您不想被它阻塞您的主线程。

【讨论】:

  • 嗯,你是什么意思?我该怎么做
  • 谢谢!你解决了!聪明的想法,也许这对我来说是一个愚蠢的问题,但每个人都会在某个时候学习。
【解决方案2】:

这应该可以完成您的工作:

app.post('/api/user', (req, res) => {

    res.redirect('http://localhost:4200/');

    const saltRounds = 10;
    var hash = bcrypt.hashSync(req.body.password, saltRounds);

    var newUserData = { username: req.body.username, password: hash, mail: req.body.mail, role: "user" };


    var user = new User(newUserData, function(err) {
    });

    user.save();
    });

更好的(推荐)方法是异步执行:

bcrypt.hash(req.body.password, saltRounds, (err, hash) => {
    if (err) {
        console.log(err);
        return;
    }

    var newUserData = { username: req.body.username, password: hash, mail: req.body.mail, role: "user" };


    var user = new User(newUserData, function(err) {
    });

    user.save();
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2021-06-08
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多