2014-09-30 3 views
0

В моем угловом приложение, у меня есть запрос перехватчик $ HTTP под названием 'authInterceptor', который я создаю так:

.factory('authInterceptor', function ($q, $window, EXT_API_BASE, $injector) { 
return { 
    request: function (config) { 

    if (config.url.indexOf(EXT_API_BASE) !== -1){ 
     var Auth = $injector.get('Auth'); 
     if(Auth.user && Auth.user.token){ 
     config.headers.Authorization = 'Web ' + Auth.user.token; 
     } 
    } 

    return config; 
    } 
}}); 

Он получает регистрацию в .config():

$httpProvider.interceptors.push('authInterceptor'); 

Как вы видите, мои заголовки авторизации привязаны к значению Auth.user.token. Это значение доступно, когда мой пользователь зарегистрирован.

Затем заголовки отправляются для любых звонков на мой api.

Проблема, с которой я столкнулся, - это когда пользователь подписывается в моем угловом приложении, заголовки авторизации все еще отправляются, хотя я уже удалил Auth.user.token.

При жестком обновлении страницы заголовки авторизации затем удаляются полностью.

Как я могу убедиться, что «authInterceptor» регистрирует изменение значения токена, когда мой пользователь подписывается?

ответ

0

Отвечая на мой собственный вопрос. Сделал ошибку новичка изменения объекта Auth.user, как это на вздыхать из:

Auth.user = {} 

Это создало новый объект и requestInterceptor еще ссылки на старый объект.

правильный способ сделать это:

delete Auth.user.token 
Смежные вопросы