【问题标题】:How to reset password in passport-local strategy in Sails.js如何在 Sails.js 的护照本地策略中重置密码
【发布时间】:2015-09-13 12:32:51
【问题描述】:

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

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

【问题讨论】:

  • 没有密码字段的情况下如何存储密码?
  • passport-local 策略据说会自动为每个用户生成一个密码并将其存储在某个地方。我不知道它存储在哪里以及如何更改它。
  • 您可以为您的用户模型添加代码吗? AFAIK 护照本地策略需要用户名和密码字段。请参考这个 - passportjs.org/docs/configure

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2016-05-29
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多