我正在使用 angular.js 和 satelizer 在 REST API 上进行 JWT 身份验证。
身份验证工作正常,页面在 3 个状态内发送授权标头。这是我的状态提供者:
$stateProvider
.state('auth', {
url: '/auth',
templateUrl: '/views/login.html',
controller: 'AuthController as auth'
})
.state('dashboard', {
url: '/dashboard',
templateUrl: '/views/dashboard.html',
controller: 'DashboardController as dash'
})
.state('mitglieder', {
url: '/mitglieder',
templateUrl: '/views/mitglieder.html',
controller: 'MitgliederController as mitglieder'
})
.state('neuesMitglied', {
url: '/neuesMitglied',
templateUrl: '/views/neuesMitglied.html',
controller: 'NewMitgliederController as newMitglied'
})
.state('users', {
url: '/users',
templateUrl: '/views/main.html',
controller: 'UserController as user'
});
});
但是,在状态“neuesMitglied”内,它突然不再发送授权标头并被其余 api 拒绝。我的 NewMitgliederController 看起来像这样:
(function() {
'use strict';
angular
.module('authApp')
.controller('NewMitgliederController', NewMitgliederController);
function NewMitgliederController($auth, $state, $http, $rootScope, $scope) {
var vm = this;
vm.error;
//vm.toAdd;
//vm.rawImage;
//Fetched Data
vm.fetchedData;
var fetchData = function() {
$http.get('APIv1/Beitragsgruppen/list/').success(function (data) {
vm.fetchedData.mitgliedsgruppen = data;
}).error(function (error) {
vm.error = error;
});
}
angular.element(document).ready( function(){
$('#mainNav ul, #mainNav li').removeClass('active');
$('#mitgliederNav').addClass('active');
fetchData();
} );
}
})();
为什么它不能在这个控制器内部工作,但在所有其他控制器中,$http.get 与授权标头一起工作?
编辑
我稍微跟踪了这个行为,发现有些东西正在删除卫星拦截器设置的“授权”标头(对于这个控制器请求,该方法被触发,这个标头实际上是由卫星拦截器添加的,但后来它被删除了而且我不知道在哪里,因为我没有接触任何标题数据或拥有自己的拦截器)......这是一个错误吗?