2016-09-05 9 views
0

私はMEANにウェブサイトを構築しています。認証とユーザーデータの記憶には、ノードのバックエンドでreq.sessionを使用します。 私は、ユーザーがログインしているときにデータを保存し始め、特定の呼び出しに再使用します。問題は、フロントエンドからの呼び出しをAngularで呼び出すと、req.session.userデータが定義されていないことです。それは正しく初期化されています。req.session.user AngularJSで定義されていません

しかし、私は同じコードを使用して、郵便番号で通話を行うとうまくいきます。

これは、呼び出しのために私のコードです:

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

そして、これはバックエンドのコードです:

フロントからのコールを行うときreq.session.userが定義されていない
if (req.session.user.isadmin) { 
    // my code 
} else { 
    return res.status(401).json({ 
     message: 'Niet bevoegd' 
    }); 
} 

-end、しかし郵便配達員を通して記入してください。 私は問題が私のPostメソッド内にあると想像しています。

ルーティングコード:

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

var producties = require('./producties.js'); 
router.post('/newproductie', auth, producties.newProductie); 

はEDIT:多分これは助けることができる、私は(私はしばらくのためのプロジェクトを起工)この作業を持っていたが、何とかそれは動作を停止し、私が把握することはできませんなぜ

編集2:これもこれを解決する可能性があります。私はconsole.log(req.sessionID)を実行し、これは新しいsessionIDを出力します。私はバックエンドへの呼び出しを毎回行います。なぜ私は理解できません。ポストマンでは、これはうまく

+0

ルーティングコードを共有できますか? –

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

次に、headers.Authorizationサブが不足しているため、次のようになります。 {ヘッダー:{'承認': 'ベアラー' + auth.getToken()}} 同じエラー –

0

私はそれを修正してみてください! 明らかに実際の掘削の後、私のコードでは(私が疑うように)それは結局はありませんでした。 Safariのプライバシー保護機能がオンになっていることを思い出した後で、ウェブサイトがあなたにフォローできないという理由で、バックエンドにapiコールを行うたびに新しいセッションが作成されました。 Stupid ...

関連する問題