簡體   English   中英

通過AngularJS未定義req.session.user

[英]req.session.user undefined through AngularJS

我正在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。 我不知道為什么。 使用Postman可以正常工作

嘗試這個

     $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')
            });
        }

我修好了它! 顯然,經過一些實際的挖掘,它畢竟不在我的代碼中(我懷疑)。 因此,經過一番思考,我記得我打開了Safari的一項隱私功能,該功能使網站無法關注您,這就是為什么每次我對后端進行api調用時都會進行一次新會話。 笨...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM