sails.js - 如何在 Sails.js 的本地 Passport 策略中重置密码

标签 sails.js passport.js passport-local

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/

相关文章:

node.js - 如何在 OpenShift 上的 Sails.js 中启用 CORS

android - 使用 Node.JS 服务器验证 Android 应用程序检索到的 Google 访问 token

express - CloudFlare set-cookie 未传递到浏览器

mongodb - 水线如何制作反向索引

node.js - Waterline-OrientDB - 双向边缘

javascript - 如何正确使用 Passport.js?

angularjs - 使用 Angular 和 Express 登录用户的正确方法是什么?

node.js - 将 Passport-Facebook 策略与 Passport-local 结合使用时,无法将用户序列化到 session 中

node.js - Passport js如何在 session 中存储用户对象?

javascript - 是否可以将 sails.js API 放在/api 而不是/下?