req.session.user未定义通过AngularJS

时间:2016-09-05 11:46:24

标签: javascript angularjs node.js session express

我正在MEAN中构建一个网站,为了验证和记住用户数据,我在Node后端使用了req.session。 所以我在用户登录时开始存储数据,并为某些调用重新使用它。问题是,当我在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未定义,但通过邮递员填写。 所以我想这个问题在于我的Post方法中的角度。

路由代码:

var auth = jwt({
    secret: 'SECRET',
    userProperty: 'payload'
});

var producties = require('./producties.js'); 
router.post('/newproductie', auth, producties.newProductie);
编辑:也许这可以帮助,我曾经有这个工作(我放下了一段时间的项目),但不知何故它停止工作,我无法弄清楚为什么

编辑2:这也可以解决这个问题。我做了一个console.log(req.sessionID),这会打印出一个新的sessionID,每次我都会调用后端。我无法弄清楚为什么。随着邮差,这工作得很好

2 个答案:

答案 0 :(得分: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')
            });
        }

答案 1 :(得分:0)

我修好了! 显然经过一些真正的挖掘,毕竟我的代码中没有(我怀疑)。 所以经过一番思考后,我记得我在Safari中启用了隐私功能,网站无法关注你,这就是为什么每次我都给后端做一个api调用时,我会做一个新的会话。 笨...