使用 len 和 setter 进行密码验证失败



我设置了如下所示的password字段:

password: {
type: Sequelize.STRING,
validate: {
len: { 
args: [7, 42],
msg: "The password length should be between 7 and 42 characters."
}
}
}

这行得通。但是,当我添加set处理程序时,要将密码转换为md5哈希,验证始终失败(它以我上面设置的消息结束(:

password: {
type: Sequelize.STRING,
validate: {
len: { 
args: [7, 42],
msg: "The password length should be between 7 and 42 characters."
}
},
set (pass, key) {
// `key` is "password" here
this.setDataValue(key, md5(pass));
}
}

在我看来,lenset不喜欢对方,但我不明白为什么。

如何解决这个问题?

我也遇到了同样的问题,最终在setter函数中创建了一个验证:

set(value) {
if (value.length >= 8 && value.length <= 20) {
this.setDataValue('password', bcrypt.hashSync(value, 10));
} else {
throw new Error('Your password should be between 8-20 characters!');
}
}

这符合我的目的。

最新更新