javascript - 加密错误 : data and hash arguments required

标签 javascript bcrypt

我收到一个 bcrypt 错误,指出需要数据和哈希参数,引用我的 routes.js 文件中的第 44 行。据我所知,我正在传递该信息:bcrypt.compare 的第一个参数是用户输入的密码,第二个是从数据库中检索到的散列密码。我做错了什么?

bcrypt.compare(req.params.password, user.password, function...

routes.js

'use strict'

var express = require('express');
var router = express.Router();
var User = require('../app/models/user');
//password hashing
var bcrypt = require('bcrypt');

var count = 0;

router.use(function(req, res, next) {
    count++;
    console.log('API hit count = %s', count);
    next();
});

// /users post(create new user) get(specific user)
router.route('/users')
    .post(function(req,res) {
        var user = new User();
        user.username = req.body.username;
        user.password = bcrypt.hashSync(req.body.password, 10);

        //save the user and checkfor errors
        user.save(function(err) {
            if (err) {
                res.send(err);
            } else {
                res.json({message: "User created!"});
            }    
        });

    })

router.route('/users/:username')
    .get(function(req, res) {
        var query = {
            username: req.params.username,
        };
        User.findOne(query, function(err, user) {
            if (err) { 
                res.send(err);
            } else {
                bcrypt.compare(req.params.password, user.password, function(err, res) {
                    if(err) {
                        console.log('Comparison error: ', err);
                    }
                })
                res.json(user);
            }
        });
    })

最佳答案

bcrypt.compare 有 3 个参数; passwordToCheck、passwordHash 和一个回调。 (Check the documentation for examples)

此错误表示前 2 个参数中的一个或两个为空或未定义。因此,请确保它们都正确传递。 (不是 null 或 undefined)

关于javascript - 加密错误 : data and hash arguments required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241113/

相关文章:

javascript - 条件语句在 jsrender v1.0pre 中有效吗?

java - 无法验证使用 jBcrypt 使用 php password_hash() 创建的 passwordhash+salt

node.js - 由于 bcrypt 错误,Npm 安装失败

javascript - 在 JavaScript 中实现协程控制流

javascript - 如何从 setTimeout 中获取另一个作用域中设置的变量?

php - 如何在 Laravel 5 中更新用户密码?

node.js - Postgre 的 BeforeCreate 钩子(Hook)不使用 bcryptjs 对密码进行哈希处理

c++ - add_library 没有使用 c 源代码创建 .lib

javascript - Angular - 如果 src 错误,则在指令内拼接数组

javascript - 为什么我的代码不能从一个 html 页面重定向到另一页面?