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

时间:2015-06-26 13:57:20

标签: sails.js passport.js passport-local

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

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

1 个答案:

答案 0 :(得分:0)

当用户选择重置他/她的密码时,您可以执行的操作是向用户发送包含与用户关联的令牌的链接的电子邮件。用户点击该链接后,您将根据令牌和广告验证用户。电子邮件然后显示重置密码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自动生成的