Eine AngularJS-App muss ein JWT mit der Node.js-Instanz austauschen, die es bedient. Die Node.js-Instanz verfügt über eine /user
-Route, die eine JWT an den Angular-Client zurückgibt. Welche spezifischen Änderungen müssen an dem folgenden Code vorgenommen werden, damit 1.) die AngularJS-App die JWT zurück an die Route /user
der Instanz Node.js senden kann und 2.) der Node.js-Code die JWT als Variable isolieren kann zum Bearbeiten?Senden von JWT von AngularJS an Node.js
Der aktuelle AngularJS Code für die Back-End-/user
Route Aufruf ist:
$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;
});
Und der Node.js-Code für die Back-End-/user
Route ist:
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");
});
Hinweis, die Node.js Beispiel enthält var jwt = require('jsonwebtoken');
, und eine der Verarbeitungsmethoden wird die JWT unter Verwendung var decoded = jwt.decode(token, {complete: true});
, wie the jsonwebtoken
API dekodieren.
Dieser GitHub Repo für Satellizer hat ein komplettes Beispiel: https: // github.com/sahat/satellizer/tree/master/examples –
@ TaylorAckley I möchte die 'jsonwebtoken' API benutzen. Ich möchte das auch extrem einfach halten, damit ich meine eigene App aus den Grundlagen aufbauen kann. Die Antwort ist wahrscheinlich so einfach, wie man dem AngularJS 'get ('/ user')' einen 'Authorization header' hinzufügt und dann diesen' Authorization header' in der Node.js '/ user'route im kleinen isolieren kann Code-Schnipsel im OP oben. – FirstOfMany