AngularJS “localStorage.getItem” é nulo em $ resource
Eu tenho um angular$resource
para fazer login e obter informações do usuário. O logon envia o nome de usuário e a senha ao servidor e obtém um token de portador. Nosuccess
função deUser.login
o token é armazenado emlocalStorage
. NogetEmail
, Estou incluindo o token no cabeçalho no endereço de e-mail do usuário.
O problema é que, pela primeira vezgetEmail
é chamado no controlador,$window.localStorage.getItem('TK')
avalia comonull
mas se eu atualizar a página, ela funcionará corretamente. Todas as solicitações subseqüentes ao servidor que possuem o token incluído funcionam conforme o esperado. O que poderia causar isso?
Para não mencionar,getEmail
é chamado após o login e confirmei que o token está presente nolocalStorage
antes de ogetEmail
é chamado.
angular.module('authentication')
.factory('User', function ($resource, $window) {
return $resource('/login', {}, {
login: {
method: 'POST'
},
getEmail: {
url: '/user',
method: 'GET',
headers: {
'Authorization': "Bearer " + $window.localStorage.getItem('TK')
}
}
});
})
Em resposta a @ comment: Meu controlador é assim:
angular
.module('app.mymodule', ['ngReource', 'authentication')
.controller('myCtrl', mymodule);
mymodule.$inject = ['User', '$window'];
function mymodule(User, $window) {
// THIS PRINTS THE TK IN CONSOLE CORRECTLY
console.log($window.localStorage.getItem("CHTOKEN"));
// THIS IS UNAUTHORIZED CUZ TK IS NULL
User.getEmail({}, function(data){
console.log('set the email');
});
}