我是第一次使用sequelize,对加密用户密码有疑问。
我想使用函数AES_ENCRYPT来加密字符串文本。 我的问题是,如何在sequelize上调用该函数?
答案 0 :(得分:3)
您需要做的是bcrypt
并钩住beforeCreate
它将是在将条目插入数据库之前执行的操作,将检查passowrd字段并在插入到数据库之前进行加密
在这里(用于密码加密的代码段):
const bcrypt = require('bcrypt');
var User = db.sequelize.define( 'user' , {
...
password : {
type : db.Sequelize.STRING
},
...
},
{
hooks : {
beforeCreate : (user , options) => {
{
user.password = user.password && user.password != "" ? bcrypt.hashSync(user.password, 10) : "";
}
}
}
});
答案 1 :(得分:0)
您需要bcrypt和hooks:beforeCreate和beforeUpdate。
const User = sequelize.define('User', {
...
password: {
type: DataTypes.STRING,
allowNull: false,
}
...
});
function generateHash(user) {
if (user === null) {
throw new Error('No found employee');
}
else if (!user.changed('password')) return user.password;
else {
let salt = bcrypt.genSaltSync();
return user.password = bcrypt.hashSync(user.password, salt);
}
}
User.beforeCreate(generateHash);
User.beforeUpdate(generateHash);