我第一次使用sequelize,对加密用户密码有疑问。我想使用函数aes\u encrypt加密字符串文本。我的问题是,我怎么能调用sequelize上的函数??
pgvzfuti1#
您需要使用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);
wtlkbnrh2#
你只需要 bcrypt Package 和挂钩 beforeCreate ,它要做的是在将条目插入db之前检查passowrd字段,并在插入db之前加密给你(密码加密代码段):
bcrypt
beforeCreate
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) : ""; } } } });
2条答案
按热度按时间pgvzfuti1#
您需要使用bcrypt和hooks:beforecreate和beforeupdate。
wtlkbnrh2#
你只需要
bcrypt
Package 和挂钩beforeCreate
,它要做的是在将条目插入db之前检查passowrd字段,并在插入db之前加密
给你(密码加密代码段):