我使用Passport-Local Mongoose来加密帐户的密码。但我不知道如何更改密码。任何人都知道该怎么办? TKSPassport-Local Mongoose - 更改密码?
15
A
回答
19
查看源也被添加到所谓setPassword架构的功能。 我相信在验证后,您可以调用它来更改用户的密码。
schema.methods.setPassword = function (password, cb) {
if (!password) {
return cb(new BadRequestError(options.missingPasswordError));
}
var self = this;
crypto.randomBytes(options.saltlen, function(err, buf) {
if (err) {
return cb(err);
}
var salt = buf.toString('hex');
crypto.pbkdf2(password, salt, options.iterations, options.keylen, function(err, hashRaw) {
if (err) {
return cb(err);
}
self.set(options.hashField, new Buffer(hashRaw, 'binary').toString('hex'));
self.set(options.saltField, salt);
cb(null, self);
});
});
};
6
很好的回答,但对于那些谁来自MEAN堆栈(采用护照的地方,没有护照,本地猫鼬):
//in app/models/user.js
/**
* Virtuals
*/
UserSchema.virtual('password').set(function(password) {
this._password = password;
this.salt = this.makeSalt();
this.hashed_password = this.encryptPassword(password);
}).get(function() {
return this._password;
});
因此,这将改变通:
user.password = '12345678';//and after this setter...
user.save(function(err){ //...save
if(err)...
});
9
无需验证。检索从使用findByUsername()
方法,其通过护照和本地猫鼬放置在模型帐户的用户,然后运行setPassword()
,然后user.save()
在回调。
userModel.findByUsername(email).then(function(sanitizedUser){
if (sanitizedUser){
sanitizedUser.setPassword(newPasswordString, function(){
sanitizedUser.save();
res.status(200).json({message: 'password reset successful'});
});
} else {
res.status(500).json({message: 'This user does not exist'});
}
},function(err){
console.error(err);
})
我拨打的用户sanitizedUser()
,因为我已经配置护照本地猫鼬有来无回用findByUsername()
密码或盐田和模型护照选项。
相关问题
- 1. 更改密码获取请求不更改密码
- 2. 更改密码
- 3. 更改密码
- 4. 更改密码
- 5. 密钥库更改密码
- 6. 更改密码Django
- 7. Django密码更改
- 8. 更改密码PFuser
- 9. 更改旧密码
- 10. PHP:更改密码
- 11. 更改密码ASP.NET
- 12. cPanel密码更改
- 13. AJAX密码更改
- 14. 击更改密码
- 15. 更改密码与重置密码
- 16. 更改密码时验证旧密码
- 17. CakePHP密码重置不更改密码
- 18. MVC验证更改密码。当前密码与新密码
- 19. Mongoose每次使用预保存钩子保存时都会更改密码
- 20. git-svn密码更改
- 21. 更改ASP.NET身份密码
- 22. Ad Asp.Net更改密码
- 23. Php 5.5更改密码
- 24. Django窗体更改密码
- 25. 强制更改密码
- 26. 更改Active Directory密码
- 27. 更改root密码mysql
- 28. 如何更改LAMP密码?
- 29. Omniauth和更改密码
- 30. Cakephp 2.0更改密码
刚试过这个,它的工作原理!这应该被标记为接受的答案。 –
反正老线程:实际上,你不需要认证。从帐户中检索用户,设置密码,然后在回调中输入user.save,就完成了。 –
验证在一个'忘记密码的电子邮件或确保用户的一些其他方式的感觉是,他们声称 – user1441287