Ele vem da partial de login que assim como a directive do header tb utiliza o LoginController. Vou postar os dois arquivos completos formatados aqui pra ver se ajuda. O login em si eu sei que está funcionando pois eu tenho outra partial que acessa outro serviço do rest que se o login não tiver sido realizado e o token não estiver no $window.sessionStorage.token o serviço não funciona, e está funcionando.
login.html
<div header user="{{usuarioLogado}}"></div>
<div ng-controller="LoginController">
<form class="form-signin">
<h2 class="form-signin-heading text-center">Dados de login</h2>
<label for="login" class="sr-only">Login</label> <input type="text" id="login" class="form-control"
ng-model="usuario.login" placeholder="Login do usuário" required autofocus> <label for="senha"
class="sr-only">Senha</label> <input type="password" id="senha" class="form-control" ng-model="usuario.senha"
placeholder="Senha" required>
<button class="btn btn-lg btn-primary btn-block" ng-click="efetuarLogin()" id="submit" type="submit">Enviar</button>
</form>
</div>
LoginController
angular.module('alvoApp').controller('LoginController', function($scope, $http, $window, $location) {
$scope.usuario = {
login : 'admin',
senha : 'admin',
};
$scope.usuarioLogado = '';
$scope.efetuarLogin = function() {
$http({
method: 'POST',
data: $scope.usuario,
url:'ws/login',
headers: {'Content-Type':'application/json'}
}).then(
function(resp) {
$scope.usuarioLogado = resp.data;
console.log('usuarioLogado', resp.data);
$window.sessionStorage.usuarioLogado = resp.data;
$location.path("/home");
}, function(err) {
$scope.usuarioLogado = '';
console.error('Error', err);
})
};
$scope.efetuarLogout = function() {
console.log('Removendo usuarioLogado da sessão!')
$scope.usuarioLogado = '';
delete $window.sessionStorage.usuarioLogado;
console.log('Removendo token da sessão!')
delete $window.sessionStorage.token;
};
})
main.js
angular.module('alvoApp', ['ngRoute', 'ngResource', 'minhasDiretivas', 'categoriaService'])
.config(function($routeProvider, $httpProvider, $locationProvider) {
//$locationProvider.html5Mode(true);
//$httpProvider.interceptors.push('AuthInterceptor');
var interceptor = ['$q', '$window', '$location', '$injector', function($q, $window, $location, $injector) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = $window.sessionStorage.token;
}
return config;
},
requestError: function(rejection) {
return $q.reject(rejection);
},
response: function (response) {
var token = response.headers('Authorization');
if (token != null) {
console.log('Old token in Session: ', $window.sessionStorage.token);
console.log('New token from Header', token);
$window.sessionStorage.token = token;
console.log('*** Token in Session *** ', $window.sessionStorage.token);
}
return response || $q.when(response);
},
// Revoke client authentication if 401 is received
responseError: function(rejection) {
console.log('Rejection response: '+rejection);
if (rejection != null && rejection.status === 401) {
if ($window.sessionStorage.token) {
console.log('Removendo token da sessão!')
delete $window.sessionStorage.token;
}
console.log('Redirecionando para login!')
$location.path("/login");
}
return $q.reject(rejection);
}
};
}];
$httpProvider.interceptors.push(interceptor);
$routeProvider.when('/categorias', {
templateUrl: 'partials/categorias.html',
controller: 'CategoriaController'
});
$routeProvider.when('/categorias/nova', {
templateUrl: 'partials/categoria.html',
controller: 'CategoriaController'
});
$routeProvider.when('/categorias/editar/:categoriaId', {
templateUrl: 'partials/categoria.html',
controller: 'CategoriaController'
});
$routeProvider.when('/login', {
templateUrl: 'partials/login.html',
controller: 'LoginController'
});
$routeProvider.when('/home', {
templateUrl: 'partials/home.html'
});
$routeProvider.otherwise({redirectTo: '/home'});
});