我使用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