Я создал собственное приложение реагирования, которое имеет серверную часть 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})
})
})
Спасибо