Отреагировать нативной ошибкой API fetch с помощью jwt
Я пытаюсь внедрить Jsonwebtoken в свое собственное приложение. Я проследил видеоурок на их официальном сайте, и он работал нормально. Тем не менее, я продолжал получать ошибки "UnauthorizedError: токен авторизации не найден" каждый раз, когда я пытаюсь сделать вызовы API. API вызывает все работы, как ожидалось, за исключением того, что я все равно получу ошибки, подобные этой. Я попробовал те же вызовы API в почтальоне, они не дают мне ошибок. Я обнаружил, что это возможно, потому что я не передал токен обратно после вызова API?
Здесь я начинаю экспресс-JWT
var expressJWT = require('express-jwt')
app.use(expressJWT({secret: 'I like different tastes'}).unless({path:['/api/users/login', '/api/users/register', '/api/users/register/facebook']}))
Здесь я вхожу, создаю и передаю jwt моей клиентской стороне
login: function(req,res){
if (req.body.purpose == 'login'){
User.findOne({'localUser.email': req.body.email,}, function(err, user){
if (err){
console.log(err)
res.status(500).json('error')
}
else if(user == null){
res.status(404).json('not found');
}
else{
if (passwordHash.compareSync(req.body.password, user.localUser.password)){
var myToken = jwt.sign({username: user.localUser.name}, 'I like different tastes')
var tmpUser = user.toJSON()
tmpUser.token = myToken
res.status(200).json(tmpUser);
}
else{
res.status(401).json('wrong credentials')
}
}
})
}
else{
res.status(400).json('You are hacked bro')
}
И это пример вызовов API, которые я выполняю после входа в систему.
fetchPost() {
var _this = this
return fetch(uri.network.uri + '/api/posts/fetch', {
method: 'POST',
headers: {
'Authorization': 'Bearer '+this.props.activeUser.token,
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
purpose: 'fetchPost',
latitude: this.state.currentRegion.latitude,
longitude: this.state.currentRegion.longitude,
maxSearch: MAX_SEARCH
})
})
.then((response) => {
if (response.status != 200){
Alert.alert(
'Sorry',
'Unexpected errors!'
);
return
}
else{
return response.json();
}
})
.then((responseJson)=>{
console.log(responseJson)
})
.catch((error) => {
console.error(error);
});
}
this.props.activeUser.token - это токен, который я передал от второй функции на стороне сервера, он работал нормально, и я получаю нужные данные. Я также считаю, что проходил правильный токен, поскольку пытался передать случайный токен, что привело к неправильному ответу.
Проблема в том, что я получу UnauthorizedError: токен авторизации не найден.