Авторизация сброса пароля с использованием стека MERN - PullRequest
0 голосов
/ 15 апреля 2020

Я использую токен авторизации в письме нодмейлера, которое отправляется каждый раз, когда пользователь сбрасывает свой пароль. У меня есть сгенерированный URL с настройкой добавленного токена и отправкой должным образом, я просто не могу правильно настроить маршрутизацию для обработки аутентификации указанного токена.

Мой запрос возвращает 404, говоря мой GET не найдено (GET http://localhost: 3000 / сброс / XXXXXXXXXXXX 404 (не найдено)). Может ли кто-нибудь помочь мне указать правильное направление?

Вот мой маршрут API для сервера

router.get('/reset', (req, res, next) => {
   User.findOne({ resetPasswordToken: req.query.resetPasswordToken }).then(user => {
      if (user == null) {
         res.json('Password link is invalid or has expired');
      } else {
         res.status(200).send({
           username: user.email,
           message: 'Password link accepted',
         })
     }
   })
});

И мой код для обработки запроса

componentDidMount() {

  console.log(this.props.match.params.token);

  axios.get('/reset' + this.props.match.params.token)
    .then(response => {
      // Conditional logic here based on response returned
    })
    .catch(function (error) {
      console.log(error);
    })
}

1 Ответ

0 голосов
/ 15 апреля 2020

Вы должны указать express ожидать, что параметр в URL-адресе будет выглядеть следующим образом:

router.get('/reset/:token', (req, res, next) => {
   // token is inside req.params.token
   User.findOne({ resetPasswordToken: req.params.token }).then(user => {
      if (user == null) {
         res.json('Password link is invalid or has expired');
      } else {
         res.status(200).send({
           username: user.email,
           message: 'Password link accepted',
         })
     }
   })
});

Затем убедитесь, что в URL-адресе есть sla sh, когда вы делаете запрос:

  axios.get('/reset/' + this.props.match.params.token)
    .then(response => {
      // Conditional logic here based on response returned
    })
    .catch(function (error) {
      console.log(error);
    })
...