Аутентификация JWT работает с $http.get, но не с $http.post

Я новичок в стеке MEAN. Я использую jwt для аутентификации конечной точки API '/api/candidates'

В клиентской/угловой службе js у меня есть следующая запись

resumeFactory.get = function(candidateName) {
   return  $http.get('/api/candidates', {
      headers: {
        Authorization: 'Bearer '+ authenticationService.getToken()     
   });
};

на стороне сервера у меня есть:

app.get('/api/candidates', auth, function (req, res) {
if (!req.payload._id) {
    //user not logged in
    console.log(req);
    res.status(401).json({"message": "no  user logged in from candidates"});
}
else {
    Candidate.find({}, function (err, candidates) {
        if (err) {
            res.send(err);
        }
        res.json(candidates);
    });
}
});

Это прекрасно работает. то есть 'auth' может извлечь токен из заголовка

Когда я меняю все на post вместо get :

на на стороне клиента

$http.post()  

на серверной стороне:

app.post()

Я получаю сообщение об ошибке от jwt следующим образом:

UnauthorizedError: No authorization token was found

Любые предложения о том, что происходит? Я могу работать с get, но хочу знать, почему post не работает


person Ravi    schedule 08.07.2016    source источник
comment
Проверьте в Dev Tools, действительно ли вы размещаете этот токен в заголовках.   -  person Nonemoticoner    schedule 08.07.2016
comment
@Nonemoticoner Я не могу найти это в Dev Tools. Не знаю, как искать заголовки в запросе   -  person Ravi    schedule 08.07.2016
comment
@ Nonemoticoner — наконец-то я смог разобраться, как проверять заголовки Networks-›XHR   -  person Ravi    schedule 08.07.2016


Ответы (1)


В конфигурации $http.post это третий аргумент, а не второй (как в get), поэтому соответствующим образом обновите свои параметры:

$http.post('/url', { cool: postData }, {
  headers: {
    Authorization: 'Bearer '+ authenticationService.getToken()
  }    
});

Еще лучше использовать перехватчик, чтобы добавить заголовок Authorization ко всем запросам. .

person Andy Gaskell    schedule 08.07.2016
comment
Спасибо, Энди Гаскелл. - person Ravi; 08.07.2016