Аутентификация JWT работает с $http.get, но не с $http.post
Я новичок в стеке MEAN. Я использую jwt для аутентификации конечной точки API '/ API / кандидатов'
В клиентской / угловой 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" может извлечь токен из заголовка
Когда я изменяю все, чтобы публиковать вместо получения:
на стороне клиента
$http.post()
на стороне сервера:
app.post()
Я получаю сообщение об ошибке от jwt следующим образом:
UnauthorizedError: No authorization token was found
Любые предложения о том, что происходит? Я могу работать с Get, но я хочу знать, почему не работает сообщение
1 ответ
Решение
С $http.post
config - это третий аргумент, а не второй (как в get
) поэтому обновите ваши параметры соответственно:
$http.post('/url', { cool: postData }, {
headers: {
Authorization: 'Bearer '+ authenticationService.getToken()
}
});
Еще лучше, используйте перехватчик, чтобы добавить заголовок авторизации для всех запросов.