[英]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.