Должен ли я поместить свой токен JWT в URL для функции сброса пароля?

#node.js #express #jwt

#node.js #экспресс #jwt

Вопрос:

В настоящее время я впервые использую функцию «Забыл пароль», и вот пока код.

отправляет электронное письмо пользователю, у которого есть URL-адрес с токеном JWT

 router.post('/change-password', verifyAuth, resetPassword);
  

получает и подтверждает JWT, затем меняет пароль

 router.post('/change-password/:token/:password', confirmResetPassword);
  

процесс, о котором я сейчас думаю, содержится в электронном письме, которое я отправляю пользователю

 http://localhost:3000/change-passowrd?token=TOKEN_VALUE
  

но я не уверен, разумная это идея или нет? Я также могу использовать файлы cookie, если это лучше, есть идеи?

Ответ №1:

Можно сохранить хранилище токенов JWT в URL-адресе для функции сброса пароля. Вы должны отправить эту ссылку по электронной почте или любой другой безопасной службе связи.

Я реализовал эту функцию

https://yourapp.com/home/reset /${токен}

 const data = {
  from: "yourcompanymail@outlook.com",
  to: user.email,
  subject: "Please reset your password",
  text: `Hello ${user.name},nnI heard that you lost your Teeny password. You can use the following link to reset your password: https://yourapp.com/home/reset/${token}
};

transporter.sendMail(data, function (error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log("Email sent: "   info.response);
  }
});
  

Теперь, если пользователь попадает по этому URL-адресу, подтвердите токен и перенаправьте или отобразите страницу смены пароля.
Но не отправляйте пароль через URL.