使用Sequelize和mysql加密密码列
我第一次使用sequelize,对加密用户密码有疑问 我想使用函数AES_ENCRYPT来加密字符串文本。使用Sequelize和mysql加密密码列,mysql,sequelize.js,Mysql,Sequelize.js,我第一次使用sequelize,对加密用户密码有疑问 我想使用函数AES_ENCRYPT来加密字符串文本。 我的问题是,如何在sequelize上调用该函数???您只需要在创建之前bcrypt打包并挂起 它要做的是在将条目插入数据库之前检查passowrd字段,并在插入数据库之前加密 这里是(密码加密的代码片段): const bcrypt = require('bcrypt'); var User = db.sequelize.define( 'user' , { ... p
我的问题是,如何在sequelize上调用该函数???您只需要在创建之前
bcrypt
打包并挂起
它要做的是在将条目插入数据库之前检查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) : "";
}
}
}
});
您需要创建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);
没有外部软件包就没有其他方法了?@Raugaral,这个软件包是最流行的加密软件,所以别担心,你不会后悔的。编写自己的加密软件是个坏主意,加密技术非常复杂,很容易犯代价高昂的错误。bcrypt是一个受欢迎的库,因此它安全且工作良好!如果使用bcrypt加密,则无法解密@KieranQuinnCorrect,这就是我不能使用任何形式的NodeJs加密的原因