在node.js中生成密码重置令牌

时间:2012-09-25 07:34:27

标签: node.js forgot-password

如何在node.js中生成可在网址中使用的密码重置令牌?

我只需要生成令牌的方法:

user.reset_password_token = ???;
user.reset_password_expire = expire_date;

编辑 - 这是解决方案:

user.reset_password_token = require('crypto').randomBytes(32).toString('hex');

3 个答案:

答案 0 :(得分:13)

我正在使用它来生成我的身份验证令牌:

require('crypto').randomBytes(32, function(ex, buf) {
    var token = buf.toString('hex');
});

Crypto Node.js v0.8.9 Manual & Documentation

答案 1 :(得分:0)

function customToken() {
    var buffreValue = new Buffer(64);
    for (var i = 0; i < buffreValue.length; i++) {
        buffreValue[i] = Math.floor(Math.random() * 256);
    }
    var token = buffreValue.toString('base64');
    return token;
}
var getToken = customToken()

答案 2 :(得分:0)

在这种情况下,首先,您应该在 schema 上创建一个 instance方法,因此,您的代码必须是这样的:

在编写此函数之前,必须在架构中添加两个字段。

1。 passwordResetExpire
2。 passwordResetToken

,功能是:

userSchema.methods.createPasswordResetToken = function () {
      const resetToken = crypto.randomBytes(32).toString('hex');
      this.passwordResetToken = crypto.createHash('sha256').update(resetToken).digest('hex');
      // Please note that you need to specify a time to expire this token. In this example is (10 min)
      this.passwordResetExpire = Date.now() + 10 * 60 * 1000;
      return resetToken;
    };