Конечная точка сброса пароля в Node js - PullRequest
0 голосов
/ 04 августа 2020

Я пишу reset password конечную точку в node js. Я использую следующую стратегию.

  • Создать 5 di git случайное число
  • отправить это случайное число пользователю по электронной почте
  • Сгенерировать токен и сохранить его в браузер приготовить ie с истечением 30 минут.
  • Также сохранить токен и случайное число в базе данных (mongoDB)

Проблема в том, что пользователь не отвечает на электронное письмо в течение 30 мин. Как я могу автоматически удалить токен и случайное число (ничего больше) из пользовательского документа через 30 минут. Или, если есть другой способ выполнить этот процесс?

Я использую модуль mongoose с express.

следующий мой код


router.post('/password/reset', async (req,res)=>
{
    if(!req.body.email)
    {
        return res.status(400).send({err: "Please Enter Email"})
    }
    try
    {
        const user = await User.findOne({email: req.body.email});
        if(!user)
        {
            return res.status(404).send({err: "Email Not Found"})
        }
        if(!user.verify)
        {
            return res.status(400).send({err: "Please Verify your email"})
        }
        const resetCode = Math.floor(Math.random()*90000)+10000;
        await Email.sendEmail(req.body.email, resetCode, (err,response)=>
        {
            if(err)
            {
                return res.status(500).send({err});
            }
            else if(response)
            {
                user.resetCode = resetCode;
                const token = user.generateAuthToken();
                user.resetConfirm = token;
                var date = new Date();
                date.setTime(date.getTime()+ (30*60*1000));
                res.cookie("resetConfirm", token, {expires: date});
                return res.status(200).send({res: response})
            }
        });
        await user.save();
    }
    catch(err)
    {
        return res.status(500).send({err: "Server is not responding"})
    }
})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...