2016-04-26 3 views
1

мы обеспечили наше приложение с помощью Azure AD + OpenID-соединения. Клиентское приложение разработано в Angular, и мы используем «угло-адальскую» библиотеку для интеграции с лазурным объявлением. Поэтому всякий раз, когда клиент делает api-вызов на сервер, он автоматически включает маркер-носитель в заголовке запроса. (На сервере есть библиотека узла «паспорт-лазурь-объявления», который проверяет маркер)Как загрузить файл с помощью углового с маркером-носителем

У нас есть функциональность загрузки файла, который в настоящее время реализуется как дуновение

Контроллер

$scope.getURL = function (reportId) { 
       return '/api/reports/download/' + reportId; 
    }; 

HTML

 <form method="get" action="{{getURL(row.id)}}"> 
     <button class="btn btn-link" type="submit">Download Results</button> 
    </form> 

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

Update1
В соответствии с рекомендацией по Angular ADAL библиотеки, мы можем обеспечить маршрут, установив свойство «requiredADLogin» истина в $ routeProvider. Как показано ниже

$routeProvider. 
     when("/todoList", { 
       controller: "todoListController", 
       templateUrl: "/App/Views/todoList.html", 
       requireADLogin: true 
     }); 

Я использую $ stateProvider. Я установил состояния для всех других маршрутов html-страницы с «requiredADLogin», и это работает нормально. Как установить $ stateProvider для маршрута API. Мой Скачать Ссылка

'/api/reports/download/'+reportID 
+0

См: Http: // StackOverflow. com/questions/25009634/where-should-i-inject-bear-tokens-in-http-in-angularjs Автор предлагает написать перехватчик для ввода токенов auth в запросы '$ http'. – Kyle

+0

@ user3862378 см. Update1 – LP13

+0

Как вы решили свою проблему? Я встречаю почти такую ​​же проблему. Downlad файл с ADAL.js с использованием проверки подлинности ADFS в моем веб-API. Черт, ссылка в основном такая же! Благодаря ! – Guigui

ответ

0

Я не знаком с Azure AD, но я думаю, вам нужно установить маркер аутентификации каким-то образом, как это в заголовке:

var req = { 
method: 'GET', 
url: '/api/reports/download/' + reportId, 
headers: { 
    'Authorization': 'Bearer ' + token 
} 
} 

$http(req).then(function(){...}, function(){...}); 
+0

см. Update1 – LP13

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