Js angulaire ajoutent un paramètre de demande sur chaque demande http $ http

Je voudrais utiliser angular $ http pour interagir avec api, mais j'ai besoin de stocker mon jeton d'authentification sur $ http, de sorte que, dans toutes les requêtes, si le poste est supprimé, je veux que le jeton soit présent, aussi j'ai vu des gens placer Tokens dans l'en-tête, je sais comment le placer dans l'en-tête, mais je ne sais pas si c'est une bonne pratique de mettre des jetons dans l'en-tête, voici ma configuration:

config(['$stateProvider', '$urlRouterProvider','$http', function($stateProvider, $urlRouterProvider, $http) { $urlRouterProvider.otherwise("/view1"); }]); 

Pour communiquer avec une API qui nécessite une authentification par jeton, vous devez configurer un intercepteur.

Dans votre fichier de configuration:

 function config(..., $httpProvider) { $httpProvider.interceptors.push('authInterceptor'); ... } angular .module('app') .config(config); 

AuthInterceptor est une usine qui s'occupera d'ajouter des en-têtes à toutes vos demandes $ http:

 function authInterceptor($rootScope, $q, $window) { return { request: function (config) { config.headers = config.headers || {}; if ($window.sessionStorage.token) { config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; } return config; }, responseError: function (rejection) { if (rejection.status === 401) { console.log("not authorised"); } return $q.reject(rejection); } }; }; angular .module('app') .factory('authInterceptor', authInterceptor); 

Le jeton peut venir de sessionStorage, cookies ou n'importe quoi.

Config $ httpProvider au démarrage!

 'use strict'; angular.module('app') .config(configHttp); configHttp.$inject = ['$httpProvider']; function configHttp($httpProvider) { if (!$httpProvider.defaults.headers.get) { $httpProvider.defaults.headers.get = {}; } //disable IE ajax request caching $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; // extra $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; $httpProvider.defaults.headers.get.Pragma = 'no-cache'; // User Credential $httpProvider.defaults.headers.post['user-credential'] = 'xxxxxx'; } 

En suivant la spécification HTTP clairement, le bon endroit pour le jeton d'autorisation est dans les en-têtes.