Отреагировать нативной ошибкой 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: токен авторизации не найден.

0 ответов

Другие вопросы по тегам