Я создаю веб-сайт в MEAN, а для аутентификации и запоминания пользовательских данных я использую req.session в бэкэнде узла. Поэтому я начинаю хранить данные, когда пользователь входит в систему, и повторно использует его для определенных вызовов. Проблема в том, что когда я звоню с моего front-end в Angular, данные req.session.user не определены. Хотя он правильно инициализирован.
Но, когда я использую тот же код и выполняю вызовы через Postman, он работает нормально.
Это мой код для вызова:
$http.defaults.headers.common['Authorization'] = 'Bearer ' + auth.getToken();
console.log($http.defaults.headers.common.Authorization);
if($scope.production = true) {
$http.post('http://url:3000/newproductie', {
title: $scope.title,
year: $scope.year
}, {withCredentials: true}).success(function(data) {
$location.path('/success')
});
}
И это код в бэкэнде:
if (req.session.user.isadmin) {
// my code
} else {
return res.status(401).json({
message: 'Niet bevoegd'
});
}
Если req.session.user не определено при выполнении вызова из front-end, но заполняется через почтальон. Поэтому я предполагаю, что проблема заключается в моем методе "Почта" в угловом.
Код маршрутизации:
var auth = jwt({
secret: 'SECRET',
userProperty: 'payload'
});
var producties = require('./producties.js');
router.post('/newproductie', auth, producties.newProductie);
EDIT: Может быть, это может помочь, я использовал эту работу (я заложил проект на некоторое время), но почему-то это перестало работать, я не могу понять, почему
EDIT 2: Это также может решить эту проблему. Я сделал console.log(req.sessionID), и это печатает новый sessionID КАЖДОЕ ВРЕМЯ Я звоню на сервер. Я не могу понять, почему. С Postman это работает отлично
Я починил это! По-видимому, после некоторого реального копания, это не было в моем коде в конце (как я подозревал). Итак, после некоторого размышления я вспомнил, что включил функцию Safari в Safari, что веб-сайты не могут следовать за вами, поэтому каждый раз, когда я делал вызов api для бэкэнда, был создан новый сеанс. Глупый...
Попробуй это
$http.post('http://url:3000/newproductie', {
title: $scope.title,
year: $scope.year},
{ 'headers': {'Authorization': 'Bearer ' + auth.getToken() }
}).success(function(data) {
console.log("DATA",data);
$location.path('/success')
});
}