如何在 node.js 中生成可用于 url 的密码重置令牌?
我只需要生成令牌的方法:
user.reset_password_token = ???;
user.reset_password_expire = expire_date;
编辑 - 这是解决方案:
user.reset_password_token = require('crypto').randomBytes(32).toString('hex');
如何在 node.js 中生成可用于 url 的密码重置令牌?
我只需要生成令牌的方法:
user.reset_password_token = ???;
user.reset_password_expire = expire_date;
编辑 - 这是解决方案:
user.reset_password_token = require('crypto').randomBytes(32).toString('hex');
我正在使用它来生成我的身份验证令牌:
require('crypto').randomBytes(32, function(ex, buf) {
var token = buf.toString('hex');
});
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()
在这种情况下,首先,您应该在架构上创建一个实例方法,因此,您的代码必须是这样的:
在编写此函数之前,您必须在架构中添加两个字段。
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;
};