我们使用Azure AD + OpenID连接来保护我们的应用程序。客户端应用程序是在Angular中开发的,我们正在使用'angular-adal'库来与azure广告集成。所以无论何时客户端使api调用服务器,它都会在请求头中自动包含不记名令牌。 (在服务器上我们有验证令牌“护照蔚广告”节点库)如何使用带有不记名令牌的Angular下载文件
我们这是目前吹塑
控制器
$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>
但是它不包括be当我点击下载按钮时,在请求中的arer标记,所以服务器返回未授权错误。我如何在请求中包含令牌?最好的方法是什么?
UPDATE1
正如我们推荐的由Angular ADAL库,我们可以通过在$ routeProvider设置“requiredADLogin”属性为true固定路线。像下面一样
$routeProvider.
when("/todoList", {
controller: "todoListController",
templateUrl: "/App/Views/todoList.html",
requireADLogin: true
});
我正在使用$ stateProvider。我已经用'requiredADLogin'设置了所有其他HTML页面路由的状态,并且工作正常。如何为API路径设置$ stateProvider。我的下载网址是
'/api/reports/download/'+reportID
参见:HTTP://计算器。 com/questions/25009634/where-should-i-inject-bearer-tokens-into -http-in-angularjs作者建议编写一个拦截器,将auth令牌插入'$ http'请求中。 – Kyle
@ user3862378请参阅update1 – LP13
您是如何解决您的问题的?我遇到了几乎相同的问题。在我的Web API中使用ADFS身份验证下载包含ADAL.js的文件。地狱的网址基本上是一样的!谢谢 ! – Guigui