У меня есть следующие угловые услуги:Угловая службы вызывается дважды
appServices.factory('AuthenticationService', function() {
var auth = {
isLogged: false
}
return auth;
})
и это TokenInterceptor
сервис:
appServices.factory('TokenInterceptor', function ($q, $window, AuthenticationService) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
},
response: function (response) {
console.log(AuthenticationService.isLogged)
return response || $q.when(response);
}
};
});
который я нажимаю в $httpProvider
$httpProvider.interceptors.push('TokenInterceptor');
И
$routeProvider.
when('/', {
templateUrl: 'partials/index',
controller: IndexCtrl,
access: { requiredLogin: true }
})
После входа в AuthenticationService.isLogged = true
, и если я перемещаться по маршруту «/» через agular кнопки все нормально, но когда страница обновляется AuthenticationService инстанциируется снова, и я могу видеть, что console.log(AuthenticationService.isLogged)
отпечатки false
и inmediately после отпечатков true
так страница переходит к «/ login».
Почему печать ложных -> правда? Что я могу сделать, чтобы сохранить состояние аутентификации после обновления?
EDIT:
Спасибо за все ваши ответы. В комментариях к аутентификации tutorial Я следил за кем-то, упомянувшим ту же проблему. Я понял, что их подход был немного громоздким. AuthenticationService
не намного больше, чем проверка наличия токена в $window.sessionStorage.token
, так что вы были в порядке с использованием своего рода хранилища.
Я в конечном итоге просто делает:
appServices.factory('AuthenticationService', function() {
isLogged: function() {
return $window.sessionStorage.token == true
}
})
Возможно, вы захотите взглянуть на ngStorage или на какой-то механизм хранения. – PSL
@PSL Я не думаю, что в этом смысл. Я думал больше о том, как ждать второго isLoggein = true или пытаясь избежать isLoggein = false. – eskalera
Извините mybad. Я правильно прочитал его – PSL