繁体   English   中英

使用 bcrypt-nodejs 散列密码时出错

[英]Error in hashing password with bcrypt-nodejs

一直在尝试在我的 nodejs 代码中创建密码 hash 但它不起作用并且没有显示任何错误消息供我调试。 而且我的用户也没有创建。

我不知道是否有更好的方法来做到这一点。

这是我负责代码的文件...Model/User.js

const Promise = require('bluebird')
const bcrypt = Promise.promisifyAll(require('bcrypt-nodejs'))

function hashPassword (user) {
const SALT_FACTOR = 8

if (!user.changed('password')) {
return;
}

return bcrypt
.genSaltSyncAsync(SALT_FACTOR)
.then(salt => bcrypt.hashAsync(user.password, salt, null))
.then(hash => {
user.setDataValue('password', hash)
})}   

module.exports = (sequelize, DataTypes) => {

const User = sequelize.define('User', {
 email: {
     type: DataTypes.STRING,
     unique: true
 },
 password: DataTypes.STRING
 }, {
 hooks: {
     beforeCreate: hashPassword,
     beforeUpdate: hashPassword,
     beforeSave: hashPassword
 }
 })
 User.prototype.comparePassword = function (password) {
return bcrypt.compareAsync(password, this.password)
}
return User }

以下代码段有任何帮助吗?

const bcrypt = require('bcryptjs');

const userAbc = {
    email: 'user@user.com',
    password: '1234'
}


async function hashPassword(user) {
    try {
        const hashedPassword = await bcrypt.hash(user.password, 12);
        user.password = hashedPassword; 

        console.log(user);
    } catch (err) {
        console.log(err);
    }
}

hashPassword(userAbc);

我确实将bcrypt-nodejs更改为bcryptjs ,然后将genSaltSyncAsync替换为genSaltSync并将所有其他 Async 替换为 Sync 并且它起作用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM