gpt4 book ai didi

sails.js - 如何通过 Waterline 中的验证更新散列密码?

转载 作者:行者123 更新时间:2023-12-04 20:41:53 26 4
gpt4 key购买 nike

Waterline 文档给出了使用 beforeCreate 的示例散列密码。除非您对密码字段进行验证并尝试更新记录,否则效果很好。这是我截取的示例:

types: {
hasUpperCase: function (value) {
return value.search(/[A-Z]/) != -1;
},
hasLowerCase: function (value) {
return value.search(/[a-z]/) != -1;
},
hasNumber: function (value) {
return value.search(/[0-9]/) != -1;
}
},
attributes: {
password: {
type: 'string',
minLength: 8,
hasUpperCase: true,
hasLowerCase: true,
hasNumber: true
},
salt: {
type: 'string'
},
// ...
}
beforeCreate: function (values, next) {
// Encrypt the password and record the salt.
psalty.createHash(values.password)
.then(function (psalt) {
values.password = psalt.hash;
values.salt = psalt.salt;
next();
})
.done(null, next);
},

当我来更新记录时,出现验证错误,例如:
{"password":[
{"rule":"hasUpperCase","message":"\"hasUpperCase\" validation rule failed for input: 'b7d58848e4eb40ec78e756d1302ef7aeb628841a40273d2465713d2231faab396669ec7bdab91c75eaf999064cfc9c3110b1211f24fbab626619730dcadfaee069b58cb4b64e6b57d1ba7c73c22d683eb783f04439c5b0d198b56d52c219c4eab35bd7b0d56696242f4be0ac70082d6dafc65d6d2f578b22ad292582fb973f'"}]
}

所以这里有几个问题。

第一个是当保存记录以更新另一个字段时(假设它是一个用户表并且他们正在更改他们的配置文件信息),当前哈希必须保持不变。

第二个问题是当现有用户想要更新现有记录中的密码时,我们需要能够重新哈希密码。

有没有人单独使用 Sails 或 Waterline 想出好的模型策略来处理这些类型的情况?我的假设是我将不得不将验证移至事件处理程序之一。

提前致谢。

最佳答案

检查此文件:

https://github.com/vimia/sails-core/blob/master/api/models/User.js

你会用密码放盐......

关于sails.js - 如何通过 Waterline 中的验证更新散列密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com