generate password reset token in node.js
-
03-07-2021 - |
Question
How do I generate a password reset token in node.js that can be used in a url?
I just need the method for generating the token:
user.reset_password_token = ???;
user.reset_password_expire = expire_date;
Edit -- here's the solution:
user.reset_password_token = require('crypto').randomBytes(32).toString('hex');
Solution
I'm using this to generate my auth-token:
require('crypto').randomBytes(32, function(ex, buf) {
var token = buf.toString('hex');
});
OTHER TIPS
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()
In this case, first, you should create an instance method on your schema, so, your code must be something like this :
Before you write this function, you must add two fields in your schema.
1. passwordResetExpire
2. passwordResetToken
and the function is:
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;
};
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow