2014-12-21 2 views
0

Я очень новичок в Angular, поэтому вполне возможно, что я совершил несколько глупых ошибок.Использовать токен из localStorageService с перехватчиком

То, что я пытаюсь сделать, это использовать токен, который сохраняется в localStorage и помещать его во все запросы.

У меня есть этот блок кода:

.config(['$httpProvider', 'localStorageService', function($httpProvider, localStorageService) { 
    //Http Interceptor to check auth failures for xhr requests 
    $httpProvider.interceptors.push('authHttpResponseInterceptor'); 
    $httpProvider.defaults.useXDomain = true; 
    $httpProvider.defaults.headers.common.Authorization = 'Token token=' + localStorageService.get("TemponiaToken") 
}]) 

И я получаю сообщение об ошибке:

Uncaught Error: [$injector:modulerr] Failed to instantiate module starter due to: 
Error: [$injector:unpr] Unknown provider: localStorageService 

Я нашел этот вопрос и ответ, который (я думаю), объясняет проблему: Why can't I use the localStorage in my .config when it's include in the .module definition?

Однако: как я могу это решить? Измените .config на .run? Спасибо за любые указатели в правильном направлении.

ответ

0

В качестве ответа, который вы нашли, невозможно внедрить службы во время фазы конфигурации.

Существует два возможных решения проблемы. Первый заключается в использовании нативного localStorage объект

localStorage.getItem("TemponiaToken") // it just works without injecting any service 

Другой должен правильно определить interceptor

yourApp.factory('AuthInterceptor', function (localStorageService) { 
    return { 
     request: function (config) { 
      config.headers = config.headers || {};     
      config.headers.Authorization = 'Token token=' + localStorageService.get("TemponiaToken")      
      return config; 
     } 
    }; 
}); 

yourApp.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('AuthInterceptor'); 
}); 
+0

Отлично работает! Я использовал перехватчик? – rept

0

Документация ngStorage говорит так:

Использование от фазы конфигурации

Для считывания и установки значений во время использования фазы угловой конфигурации функции .get/.set, предоставленные поставщиком.

var app = angular.module('app', ['ngStorage']) 
.config(['$localStorageProvider', 
    function ($localStorageProvider) { 
     $localStorageProvider.get('MyKey'); 

     $localStorageProvider.set('MyKey', { k: 'value' }); 
    }]); 
Смежные вопросы