Knoten und eckig. Ich habe eine MEAN-Stack-Authentifizierungsanwendung, bei der ich ein JWT-Token bei erfolgreicher Anmeldung wie folgt setze und es in einer Sitzung im Controller ablege. Zuweisen der JWT-Token config.headers durch Service Interceptor:NodeJs - Benutzerinformationen vom JWT-Token abrufen?
var token = jwt.sign({id: user._id}, secret.secretToken, { expiresIn: tokenManager.TOKEN_EXPIRATION_SEC });
return res.json({token:token});
authservice.js Interceptor (weggelassen Request, Reaktion und responseError):
authServices.factory('TokenInterceptor', ['$q', '$window', '$location','AuthenticationService',function ($q, $window, $location, AuthenticationService) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
}
};
}]);
Nun wollte ich die in Benutzerdaten angemeldet erhalten aus das Token, Wie kann ich das tun? Ich habe es wie folgt versucht, nicht funktioniert. Wenn ich den Fehler von Users.js Log-Datei es sagt:
authController.js "Reference Header nicht definiert":
$scope.me = function() {
UserService.me(function(res) {
$scope.myDetails = res;
}, function() {
console.log('Failed to fetch details');
$rootScope.error = 'Failed to fetch details';
})
};
authService.js:
authServices.factory('UserService',['$http', function($http) {
return {
me:function() {
return $http.get(options.api.base_url + '/me');
}
}
}]);
Users.js (Node):
Muss ich das Token auch als Parameter übergeben, um die Benutzerdetails abzurufen? Oder speichern Sie die Benutzerdetails auch in einer separaten Sitzungsvariablen?
Vielen Dank! Es funktionierte. Machen Sie einfach eine einfache Änderung decided = jwt.verify (authorization.split ('') [1], secret.secretToken); wie ich Bearer + Token als mein Token habe. – Srini
Ich fand mehr Vorteile für die Verwendung von JWT als die Verwendung eines Reisepasses. Ich folge diesen beiden: http://www.kdelemme.com/2014/03/09/authentication-with-angularjs-and-a-node-js-rest-api/ und http: //code.tutsplus. com/tutorials/token-based-authentication-mit-angularjs-nodejs - cms-22543. Bitte beraten Sie, wenn der Pass eine gute Wahl ist. – Srini
Passport kann JWT genauso verwenden. Es bietet Ihnen nur eine bequeme Abstraktion von den Authentifizierungsverfahren. Mein Router-Code für geschützte Methoden sieht so aus: 'app.get ('/ api/content', pass.authenticate ('lokale-autorisierung', { session: false }), api.listContent);' –