React Native Fetch Запросы не отправляются в мой бэкэнд Node J для некоторых пользователей - PullRequest
0 голосов
/ 13 декабря 2018
  • Я создал собственное приложение реагирования, которое имеет серверную часть Node js.Пользователи могут войти в систему, зарегистрироваться и просмотреть страницу профиля.

  • Все мои пользователи могут войти в систему, но некоторые из них не могут просматривать страницу профиля.

  • Когда я смотрю на запрос к моему бэкэнду, я получаю:

    POST / UserRouter / SignIn 200 212,537 мс - 130342

  • Вход в систему работает, он находит пользователя, возвращает токен JWT.Когда он находится в приложении, другие запросы не выполняются.Я получаю JSON Parse error: неожиданный EOF
  • Как только вы войдете в систему, он должен немедленно сделать запрос на получение вашего профиля.С некоторыми учетными записями этого не происходит

Моя первоначальная гипотеза этой проблемы состоит в том, что токен для некоторых пользователей истек, поэтому они не могут получить доступ к защищенным маршрутам.Я использую p *** assport-jwt *** для своих токенов.Следовательно, сервер не регистрирует никаких запросов.

Пожалуйста, найдите мой код ниже:

_fetchData = () => {

  AsyncStorage.getItem('jwt', (err, token) => {
    fetch(`${backendUri }/UserRouter/Profile`, {
      method: 'GET',
      headers: {
        Accept: 'application/json',
        Authorization: token
      }
    })
    .then((response) => response.json())
    .then((json) => {
      this.setState({name:json.name})
    })
    .catch((error) => {
      console.log(error)
      alert('There was an error ')
    })
    .done()
  })
}

Вот мой код JS узла

app.get('/UserRouter/profile', passport.authenticate('jwt1', { session: false }), function (req, res) {
  const token = req.headers.authorization
  const decoded = jwt.decode(token.substring(4), config.secret)
  User.findOne({
    _id: decoded._id
  },
  function (err, user) {
    if (err) throw err

    res.json({ email: user.email, name: user.fName})
  })
})

Спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

Это был ответ: https://stackoverflow.com/a/33617414/6542299

Оказывается, я кодировал свой токен с документом пользователя.документ пользователя был слишком большим.поэтому мне просто нужно было уменьшить его

...