2016-02-07 8 views
2

Я работаю над веб-приложением. У меня есть два отдельных проекта для интерфейса и API. Для доступа к apis требуется аутентификация. Я написал общий код для передачи токена для каждого вызова api.Авторизация для window.location.href call in angular js

App.config(function ($httpProvider) { 
$httpProvider.interceptors.push('authInterceptorService');  
}); 

Это мой заводской код authInterceptorService.

var localStorageLocation = ngAuthSettings.localStorageLocation; 

     var authInterceptorServiceFactory = {}; 

     var _request = function (config) { 

      config.headers = config.headers || {}; 

      var authData = localStorageService.get(localStorageLocation); 
      if (authData) { 
        config.headers.Authorization = 'Bearer ' + authData.token; 
      } 
      return config; 
     } 
    authInterceptorServiceFactory.request = _request; 

Теперь у меня есть API для загрузки pdf-файла. Я использую 'window.location.href = uri'. Но я получаю несанкционированное исключение. Теперь я хочу знать, есть ли способ передать мой токен в запросе. И есть ли другой способ получить доступ к моему файлу url загрузки, кроме использования window.location (я предпочитаю использовать window.location, но на данный момент я отчаянно нуждаюсь в том, чтобы работать так или иначе).

+0

Я не хотел сказать, что получаю исключение. Я имел в виду, что я не могу получить доступ к api, и я получаю «Авторизация была отклонена для этого запроса». В ответ. – Mounika

+0

Благодарим вас за это. Вы можете поделиться запросом и соответствующим ответом с панели _Network_ вашего браузера ? Это помогло бы обеспечить некоторый контекст относительно причины несанкционированного запроса. – gnerkus

ответ

0

Простой способ может быть передача маркеров в URL:/pdfuri маркер = маркер

, как мы добились того, что в моем последнем проекте вызова в формате PDF API (с помощью AJAX), который возвращает временный адрес где? вы можете загрузить свой pdf-файл.

+0

Передача маркера с URL-адреса все еще приводит к неавторизованному отклику. И да, я могу вернуть URL-адрес, который не требует токена, и установить window.location для этого , но я хочу знать, есть ли какой-либо вариант, кроме раскрытия api, который не является безопасным. – Mounika

+0

Конечно, если вы отправляете токен в строке запроса, вы также должны изменить бэкэнд, потому что вы не найдете никакого заголовка. второй вариант не менее безопасен: вы отправите URL-адрес, который истекает примерно через 10 минут и состоит из хэша. Я использовал этот метод в домашнем банке, поэтому я думаю, что это достаточно безопасно ... –