2016-07-19 13 views
0

AngularJSアプリケーションは、それを処理するNode.jsインスタンスとJWTを交換する必要があります。 Node.jsインスタンスには、AngularクライアントにJWTを返す/userルートがあります。 以下のコードを変更する必要があるため、1. AngularJSアプリケーションは、JWTをNode.jsインスタンスの/userルートに送り返すことができます。2.)Node.jsコードは、JWTを変数として分離することができます処理のために?AngularJSからNode.jsにJWTを送信

バックエンド/userルートを呼び出すための現在のAngularJSコードは次のとおりです。

$http.get('user').then(function(response) { 
     console.log('response is: '); 
     console.log(response); 
     if (response.data.token === 'anonymous') { 
      $rootScope.authenticated = false; 
     } else { 
      $rootScope.userJWT = response.data.token; 
      var payload = $rootScope.userJWT.split('.')[1]; 
      payload = $window.atob(payload); 
      payload = JSON.parse(payload); 
      self.name = payload.name; 
      self.authorities = payload.authorities; 
      $rootScope.authenticated = true; 
     } 
    }, function() { 
     $rootScope.authenticated = false; 
    }); 

とバックエンド/userルートのNode.jsのコードは次のとおりです。

app.get('/user**', function(req, res) { 
    console.log("You Hit The User Route TOP"); 
    //How do we get the JWT from req? 
    var user = getUserName(theJwt); 
    var token = getToken(user); 
    var jwtJSON = getUser(token); 
    if((jwtJSON["token"] == 'error') || jwtJSON["token"] == 'anonymous') { 
     res.sendStatus(500); // Return back that an error occurred 
    } else { 
     res.json(jwtJSON); 
    } 
    console.log("You Hit The User Route BOTTOM"); 
}); 

注意、Node.jsの例はvar jwt = require('jsonwebtoken');を含み、処理方法の1つはのようにvar decoded = jwt.decode(token, {complete: true});を使用してJWTをデコードします。

+0

Satellizerのためのこのgithubのレポは完全な例があります。 ます。https://をgithub.com/sahat/satellizer/tree/master/examples –

+0

@TaylorAckley I 'jsonwebtoken' APIを使いたいです。私はこれを非常にシンプルにして、自分のアプリを基本から構築できるようにしたいと思っています。答えはおそらく、AngularJS 'get( '/ user')'に 'Authorization header 'を追加する方法と、Node.js'/user'ルートの 'Authorization header'を小さな上記OPのコードスニペット。 – FirstOfMany

答えて

2

JWTを使用する場合、トークンの通信に必要な方法はありません。

最も一般的な方法は、トークンをHTTPヘッダーに配置することです。

AngularJS側では、JWTを含む余分なヘッダー(例:X-Auth-Token)でHTTPリクエストを行います。 AngularJS側の

例:

var config = { 
    headers: { 
     "X-Auth-Token": $rootScope.userJWT 
    } 
} 
$http.get('routeThatNeedsJWT', config).then(function(response) { ... }); 

Node.jsの側で、あなたは、ヘッダーの内容を取得し、それを処理jsonwebtokenライブラリを使用します。 Node.jsの側の

例:

app.get('/routeThatNeedsJWT', function(req, res) { 
    var rawTokenFromHeader = req.get('X-Auth-Token'); // Get JWT from header 
    try { 
     var jwtJSON = jwt.verify(token, 'secret'); // Verify and decode JWT 
     res.json(jwtJSON); 
    } catch (err) { 
     res.sendStatus(500); // Return back that an error occurred 
    } 
}); 

参考リンク:

Express 4.x getting header value

jsonwebtoken library verify token

関連する問題