Passport.js 在 Node.js 中提供身份验证框架。它只处理身份验证。
现在我想启用密码重置。由于用户模型中没有密码字段,只有 Passport ,如何在 Passport 本地策略中重置密码?我假设用户需要生成一个新密码并调用一些东西来覆盖旧密码的现有哈希。这些方法是什么,我在哪里可以找到它们?
最佳答案
当用户选择重置他/她的密码时,您可以做的是向用户发送一封电子邮件,其中包含一个包含与用户关联的 token 的链接。用户单击链接后,您将根据 token 和电子邮件验证用户,然后显示重置密码的 HTML。用户输入新密码后,在后端代码中,您在 User
上设置密码。散列后的对象,然后保存它。您也可以将 token 设置为空。
带有base64的示例代码将如下所示
user.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');
user.password = user.hashPassword('newPassword');
user.token = undefined;
user.save(...)
hashPassword 方法是给定的。
UserSchema.methods.hashPassword = function(password) {
if (this.salt && password) {
return crypto.pbkdf2Sync(password, this.salt, 10000, 64).toString('base64');
} else {
return password;
}
};
上面的代码是用 Yeoman 自动生成的
关于sails.js - 如何在 Sails.js 的本地 Passport 策略中重置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075130/