Oi Alan, vou te passar mais uma solução aqui, mas você lapida depois, tudo bem?
Veja que no LoginController
eu guardo o usuário no $rootScope
e também no sessionStorage
:
angular.module('alurapic').controller('LoginController', function($scope, $http, $location, $rootScope, $window) {
$scope.usuario = {};
$scope.mensagem = '';
$scope.autenticar = function() {
var usuario = $scope.usuario;
$http.post('/autenticar', {login: usuario.login, senha: usuario.senha})
.then(function() {
$window.sessionStorage.login = $scope.usuario.login;
$rootScope.login = $scope.usuario.login;
$location.path('/');
}, function(erro) {
$scope.usuario = {};
$scope.mensagem = 'Login/Senha incorretos';
});
};
});
Perfeito, agora em index.html
, antes de <ng-view></ng-view>
temos:
<p>Usuario logado: {{login}}</p>
Para revolver o problema do usuário recarregar a página com o F5 vamos fazer com que assim que a página seja recarregada ele pegue o usuário do sessionStorage jogando-o novamente para o $rootScope
:
angular.module('alurapic', ['minhasDiretivas','ngAnimate', 'ngRoute', 'ngResource', 'meusServicos'])
.config(function($routeProvider, $locationProvider, $httpProvider) {
// rotas da sua aplicação.
})
.run(function($rootScope, $window) {
$rootScope.login = $window.sessionStorage.login;
});
Veja que usei a função run
executada assim que nossa aplicação é carregada.
Bom, acho que com isso você tem material bem legal para lapidar e resolver esse problema. Só não esqueça de limpar o token e o login quando fizer logout do sistema.