bcrypt 密码一段时间后更改
bcrypt password is changing after a time
我创建了一个类似于博客应用程序的应用程序。用户可以注册和登录注销。当用户创建其帐户而不是注销时 s/he 可以使用相同的密码再次登录。但是,在用户尝试使用相同的密码和用户名登录的特定时间(我无法准确指定时间但超过 1 天)之后。 Bcrypt returns 错误。
这是用户尝试登录时的功能。
userSchema.statics.login = async function(username,password){
const user = await this.findOne({username})
if (user){
const auth = await bcrypt.compare(password,user.password)
console.log(auth)
if (auth){
return user
}else{
throw Error('Password is wrong.')
}
}else{
throw Error('Username doesn\'t exist.')
}}
这是用户注册时的功能
userSchema.pre('save', async function(next){
const salt = await bcrypt.genSalt()
this.password = await bcrypt.hash(this.password,salt)
next()
})
不确定这是否有帮助,但这是我使用 bcrypt 预保存密码以及比较密码时的方式:
// hash the password before the user is saved
UserSchema.pre('save', function hashPassword(next) {
// hash the password only if the password has been changed or user is new
if (!this.isModified('password')) {
next();
return;
}
// generate the hash
_hash(this.password, null, null, (err, hash) => {
if (err) {
next(err);
return;
}
// change the password to the hashed version
this.password = hash;
next();
});
});
// method to compare a given password with the database hash
UserSchema.methods.comparePassword = function comparePassword(password) {
const data = compareSync(password, this.password);
return data;
};
我创建了一个类似于博客应用程序的应用程序。用户可以注册和登录注销。当用户创建其帐户而不是注销时 s/he 可以使用相同的密码再次登录。但是,在用户尝试使用相同的密码和用户名登录的特定时间(我无法准确指定时间但超过 1 天)之后。 Bcrypt returns 错误。
这是用户尝试登录时的功能。
userSchema.statics.login = async function(username,password){
const user = await this.findOne({username})
if (user){
const auth = await bcrypt.compare(password,user.password)
console.log(auth)
if (auth){
return user
}else{
throw Error('Password is wrong.')
}
}else{
throw Error('Username doesn\'t exist.')
}}
这是用户注册时的功能
userSchema.pre('save', async function(next){
const salt = await bcrypt.genSalt()
this.password = await bcrypt.hash(this.password,salt)
next()
})
不确定这是否有帮助,但这是我使用 bcrypt 预保存密码以及比较密码时的方式:
// hash the password before the user is saved
UserSchema.pre('save', function hashPassword(next) {
// hash the password only if the password has been changed or user is new
if (!this.isModified('password')) {
next();
return;
}
// generate the hash
_hash(this.password, null, null, (err, hash) => {
if (err) {
next(err);
return;
}
// change the password to the hashed version
this.password = hash;
next();
});
});
// method to compare a given password with the database hash
UserSchema.methods.comparePassword = function comparePassword(password) {
const data = compareSync(password, this.password);
return data;
};