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

如何在Sails.js中重置passport本地策略中的密码,sails.js,passport.js,passport-local,Sails.js,Passport.js,Passport Local,Passport.js在Node.js中提供身份验证框架。它只处理身份验证 现在我想启用密码重置。由于用户模型中没有密码字段,只有passport,如何在passport本地策略中重置密码?我假设用户需要生成一个新密码并调用一些东西来覆盖旧密码的现有哈希。这些方法是什么?我在哪里可以找到它们 当用户选择重置其密码时,您可以向该用户发送一封电子邮件,其中包含与该用户关联的令牌链接。用户单击链接后,您将根据令牌和电子邮件验证用户,然后显示重置密码HTML。用户输入新密码后,在后端代码中,在散列后在u

Passport.js在Node.js中提供身份验证框架。它只处理身份验证


现在我想启用密码重置。由于用户模型中没有密码字段,只有passport,如何在passport本地策略中重置密码?我假设用户需要生成一个新密码并调用一些东西来覆盖旧密码的现有哈希。这些方法是什么?我在哪里可以找到它们

当用户选择重置其密码时,您可以向该用户发送一封电子邮件,其中包含与该用户关联的令牌链接。用户单击链接后,您将根据令牌和电子邮件验证用户,然后显示重置密码HTML。用户输入新密码后,在后端代码中,在散列后在
user
对象上设置密码,然后保存它。您也可以将令牌设置为null

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自动生成的

您如何在没有密码字段的情况下存储密码?passport local strategy假定为每个用户自动生成密码并将其存储在某个位置。我不知道它存储在哪里以及如何更改。您可以为您的用户模型添加代码吗?。AFAIK passport本地策略需要用户名和密码字段。请参考这个-