Express Bcrypt+;Sequelize密码未保存为数据库中的哈希
Sequelize+Bcrypt不将密码作为散列存储在数据库中 正如标题所述,每当我试图将用户存储到SQLite数据库中时,控制台都会将密码作为哈希输出,但当我使用DBbrowser查看数据库时,我可以看到明文密码 模型 控制器 更详细地说,每当我创建一个用户时,我都会收到以下信息:Express Bcrypt+;Sequelize密码未保存为数据库中的哈希,express,hash,sequelize.js,bcrypt,Express,Hash,Sequelize.js,Bcrypt,Sequelize+Bcrypt不将密码作为散列存储在数据库中 正如标题所述,每当我试图将用户存储到SQLite数据库中时,控制台都会将密码作为哈希输出,但当我使用DBbrowser查看数据库时,我可以看到明文密码 模型 控制器 更详细地说,每当我创建一个用户时,我都会收到以下信息: { "user": { "id": 1, "email": 'test@test.com", "password": "$2b$08$SYYXU/GDSCFs
{
"user": {
"id": 1,
"email": 'test@test.com",
"password": "$2b$08$SYYXU/GDSCFsp3MVeuqrduI0lOLHeeub7whXiaMMoVxO53YJry.1i",
"updatedAt": "2018-09-07T22:44:12.944Z",
"createdAt": "2018-09-07T22:44:12.944Z"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZW1haWwiOiJTVVBCUkhVQGxvbC5jb20iLCJwYXNzd29yZCI6IiQyYiQwOCRTWVlYVS9HRFNDRnNwM01WZXVxcmR1STBsT0xIZWV1Yjd3aFhpYU1Nb1Z4TzUzWUpyeS4xaSIsInVwZGF0ZWRBdCI6IjIwMTgtMDktMDdUMjI6NDQ6MTIuOTQ0WiIsImNyZWF0ZWRBdCI6IjIwMTgtMDktMDdUMjI6NDQ6MTIuOTQ0WiIsImlhdCI6MTUzNjM2MDI1MywiZXhwIjoxNTM2OTY1MDUzfQ.mDaeIikzUcV_AGTuklnLucx9mVyeScGpMym1y0kJnsg"
}
对我来说,DB成功地散列了我的密码,并存储了它。对于我来说,这个悬而未决的问题是,我认为它导致bcrypt.compare函数抛出“false”。一如既往,我们将非常感谢您的任何见解或帮助 你能试着只加一个钩子吗
hooks: {
beforeSave: hashPassword,
}
因为我觉得你的密码被哈希了两次。正如beforeSave和beforeCreate一样,这两个钩子都会被执行
希望能有所帮助我敢肯定,这个答案对你来说太晚了,但可能会帮助其他人找到同样的问题 我看到的主要问题是如何使用异步/等待模式。更改此选项:
async function hashPassword (user, options) {
if (!user.changed('password')) {
return 0
}
const SALT_FACTOR = 8
await bcrypt.hash(user.password, SALT_FACTOR, (err, hash) => {
if (err) {
console.log(err)
}
// user.setDataValue('password', hash)
user.password = hash
console.log(user)
})
}
对于这一点,他为我工作:
async function hashPassword(user, options) {
if (!user.changed("password")) {
return 0;
}
user.password = await bcrypt.hash(user.password, SALT_FACTOR);
}
您是否已检查数据库中的密码字段?。或者只是比较密码工作不正常我在数据库中检查了密码。比较密码不起作用,因为它正在比较哈希密码和未哈希密码。sequelize钩子不起作用我尝试只使用一个钩子,但仍然收到相同的问题。
async function hashPassword (user, options) {
if (!user.changed('password')) {
return 0
}
const SALT_FACTOR = 8
await bcrypt.hash(user.password, SALT_FACTOR, (err, hash) => {
if (err) {
console.log(err)
}
// user.setDataValue('password', hash)
user.password = hash
console.log(user)
})
}
async function hashPassword(user, options) {
if (!user.changed("password")) {
return 0;
}
user.password = await bcrypt.hash(user.password, SALT_FACTOR);
}