2015-06-01 3 views
-1

У меня есть этот $ http-вызов после того, как пользователь выполнил вход, чтобы получить информацию о пользователе. Когда пользователь входит в систему I хранить маркер в user.token, который выглядит следующим образом:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1laWQiOiIzZGMwM2FiOC0wZGFiLTQ1ZGYtYjEwNS03Y2VmNDA4ZjQ4YWQiLCJ1bmlxdWVfbmFtZSI6InIzcGxpY2EiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2FjY2Vzc2NvbnRyb2xzZXJ2aWNlLzIwMTAvMDcvY2xhaW1zL2lkZW50aXR5cHJvdmlkZXIiOiJBU1AuTkVUIElkZW50aXR5IiwiQXNwTmV0LklkZW50aXR5LlNlY3VyaXR5U3RhbXAiOiI4NGIyMjMzMi1jOTkyLTQ1YjItYWI0Yi1mYzU1YzkzYWU3NjIiLCJyb2xlIjoiQWRtaW5pc3RyYXRvciIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTgxMjciLCJhdWQiOiJkM2U3OWM4MS0xNjNmLTQwMTMtODA2NC0zMDc1OTBhOWMwYmYiLCJleHAiOjE0MzMyNzc2NDIsIm5iZiI6MTQzMzE5MTI0Mn0.erNou7AjihJrp2glS89zNYYFc65mREscGwl45wVUSYA

мне взять этот маркер и передать его в $ HTTP вызова, как это:

$http.get('api/users', { headers: { 'Authorization': 'Bearer ' + user.token }, params: { username: model.userName } }); 

Но в стельку, если я исследую этот вызов, он изменяет свой маркер. Запрос в стельке выглядит следующим образом:

Авторизация: Знаменосец cF9xV4hw3psCq2of-wRDn-cRE_IifwzCYyoS-c5Njdk4dGu7EGGQ8Bl_XOr8uEGMAFkxR0paqfCI4Aq17VWP6BDxMZN2Nkk7WIfPLVrilKkMybmGxbOqAKqwl3F1qnEvtlvdgQtdpAqgR6-s1oFU0QemRVaQiyOPbmJwEyfh5mYrNVLuZniPPCvpZvOKKBSpinpCY-vNINI3SYvbZyVpRza18aFJfXy-JgUSN3YZBmg1T4JFjMucCueqAWlulGaDGRc8hAXp7RYnxeUtDO7yOhPzQehjVVxl59Lz461DpsXcZjuEILhlFXbyC4yn24DHIFfLs0_x9DCZwodXaaAwoCmRI_vx8yLpjfoPcmnOR_20lLlWp0pOODOqoKSRxZldnRZO8pbilo_AcYHSCQlyeMPOevvO1bP8yggGdCe_LVQiTNJgzhMccKRcziZqZjPCMw0Kz_OLkR5w2ayS5JTdfA

, который не является маркером, который я прошел. Кто-нибудь знает, почему это может произойти?

+1

Возможно, у вас есть модуль, содержащийся в угловом блоке, который реализует HTTP-перехватчик, который вводит заголовок auth. –

+0

Что вы используете для хранения токена? Нам нужно увидеть здесь немного больше кода. – cport1

+0

Кевин, это точно. Я получал старый токен из файлов cookie, который переписывал то, что я установил в своей функции входа. Я ответил на свой вопрос. – r3plica

ответ

0

Как правильно сказал Кевин, я устанавливал его на своем перехватчике http. Выглядело это так:

.factory('AuthInterceptorService', ['$rootScope', '$q', '$location', function ($rootScope, $q, $location) { 

    // Function to handle a request 
    var request = function (config) { 

     // Get the current user 
     var user = $rootScope.user; 

     // Get the current headers or an empty object 
     config.headers = config.headers || {}; 

     // If we have a user 
     if (user && user.token) { 

      // Then set the authorization header 
      config.headers.Authorization = 'Bearer ' + user.token; 
     } 

     // Return our config 
     return config; 
    }; 

    // Function to handle errors 
    var responseError = function (rejection) { 

     // If we have unauthorized access 
     if (rejection.status === 401) { 

      // Redirect to our login page 
      $location.path('/account/login'); 
     } 

     // Return our rejected promise 
     return $q.reject(rejection); 
    }; 

    return { 
     request: request, 
     responseError: responseError 
    }; 
}]) 

, чтобы исправить эту проблему, я просто поставил если заявление проверять, если авторизации заголовок уже был установлен, как это:

.factory('AuthInterceptorService', ['$rootScope', '$q', '$location', function ($rootScope, $q, $location) { 

    // Function to handle a request 
    var request = function (config) { 

     // Get the current user 
     var user = $rootScope.user; 

     // Get the current headers or an empty object 
     config.headers = config.headers || {}; 

     // If we have a user 
     if (user && user.token) { 

      // If we don't already have the authorization header set 
      if (!config.headers.Authorization) { 

       // Then set the authorization header 
       config.headers.Authorization = 'Bearer ' + user.token; 
      } 
     } 

     // Return our config 
     return config; 
    }; 

    // Function to handle errors 
    var responseError = function (rejection) { 

     // If we have unauthorized access 
     if (rejection.status === 401) { 

      // Redirect to our login page 
      $location.path('/account/login'); 
     } 

     // Return our rejected promise 
     return $q.reject(rejection); 
    }; 

    return { 
     request: request, 
     responseError: responseError 
    }; 
}]) 

Simples :)

Смежные вопросы