req.session.user не определено через AngularJS

0

Я создаю веб-сайт в 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 это работает отлично

  • 0
    Можете ли вы поделиться кодом маршрутизации?
  • 0
    Добавлен код маршрутизации
Теги:
express
session

2 ответа

0

Я починил это! По-видимому, после некоторого реального копания, это не было в моем коде в конце (как я подозревал). Итак, после некоторого размышления я вспомнил, что включил функцию Safari в Safari, что веб-сайты не могут следовать за вами, поэтому каждый раз, когда я делал вызов api для бэкэнда, был создан новый сеанс. Глупый...

0

Попробуй это

     $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')
            });
        }
  • 0
    Тогда я пропустил бы подпункт headers.Authorization, поэтому он должен был бы стать: {headers: {'Authorization': 'Bearer' + auth.getToken ()}} Но это дает ту же ошибку

Ещё вопросы

Сообщество Overcoder
Наверх
Меню