Adal Interceptor 没有 return 回调到 ajax 调用
Adal Interceptor doesnt return the call back to the ajax call
我在我的 angular js 应用程序中使用 AdalJs,当我访问外部 API 时,adal 拦截器检查我的资源是否存在于会话存储中,如果存在则进行获取令牌调用它不存在于会话存储中。检索到令牌后,它会使用该资源的新令牌更新会话存储,但控制不会返回到 ajax 调用并且调用者会卡在 there.If 我再次刷新页面我我能够从永恒 API 中获取数据,因为它现在能够从会话存储中获取数据。我在这里遗漏了什么吗?
sampleApp.config(['$routeProvider', '$httpProvider', 'config', 'adalAuthenticationServiceProvider', function ($routeProvider, $httpProvider, config, adalProvider) {
$routeProvider
// route for the home page
.when('/home', {
templateUrl : 'pages/home.html',
controller : 'mainController',
})
.when('/userInfo', {
templateUrl : 'pages/userInfo.html',
controller : 'userInfoController',
requireADLogin: true,
})
.when('/apiData', {
templateUrl : 'pages/apiData.html',
controller : 'apiDataController',
requireADLogin: true,
}).otherwise({ redirectTo: "/home" });
adalProvider.init({
instance: config.instance,
tenant: config.tenant, //adfs
clientId: config.clientId,
extraQueryParameter: config.extraQueryParameter,
endpoints : config.endpoints,
redirectUri : config.redirectUri,
},
$httpProvider);
}]);
sampleApp.controller('apiDataController', function($scope, adalAuthenticationService, $http, config) {
$scope.message = 'Fetching data from the API:';
$scope.userInfo = adalAuthenticationService.userInfo;
var client = $http({
method: 'GET',
url: config.apiURL,
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }
});
client.then(function(data){
console.log(data);
$scope.message = "Data is fetched from the API with Access Token";
$scope.apiData = data.data;
}, function(data) {
console.log(data)
$scope.message = data.data;
});
});
你的代码是正确的,当我们将 Azure AD 集成到一个 AngularJS 单页应用程序时,我们需要确保 adal.js 和 Angular.js 是相同的版本,版本不匹配可能造成潜在问题。
我在我的 angular js 应用程序中使用 AdalJs,当我访问外部 API 时,adal 拦截器检查我的资源是否存在于会话存储中,如果存在则进行获取令牌调用它不存在于会话存储中。检索到令牌后,它会使用该资源的新令牌更新会话存储,但控制不会返回到 ajax 调用并且调用者会卡在 there.If 我再次刷新页面我我能够从永恒 API 中获取数据,因为它现在能够从会话存储中获取数据。我在这里遗漏了什么吗?
sampleApp.config(['$routeProvider', '$httpProvider', 'config', 'adalAuthenticationServiceProvider', function ($routeProvider, $httpProvider, config, adalProvider) {
$routeProvider
// route for the home page
.when('/home', {
templateUrl : 'pages/home.html',
controller : 'mainController',
})
.when('/userInfo', {
templateUrl : 'pages/userInfo.html',
controller : 'userInfoController',
requireADLogin: true,
})
.when('/apiData', {
templateUrl : 'pages/apiData.html',
controller : 'apiDataController',
requireADLogin: true,
}).otherwise({ redirectTo: "/home" });
adalProvider.init({
instance: config.instance,
tenant: config.tenant, //adfs
clientId: config.clientId,
extraQueryParameter: config.extraQueryParameter,
endpoints : config.endpoints,
redirectUri : config.redirectUri,
},
$httpProvider);
}]);
sampleApp.controller('apiDataController', function($scope, adalAuthenticationService, $http, config) {
$scope.message = 'Fetching data from the API:';
$scope.userInfo = adalAuthenticationService.userInfo;
var client = $http({
method: 'GET',
url: config.apiURL,
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }
});
client.then(function(data){
console.log(data);
$scope.message = "Data is fetched from the API with Access Token";
$scope.apiData = data.data;
}, function(data) {
console.log(data)
$scope.message = data.data;
});
});
你的代码是正确的,当我们将 Azure AD 集成到一个 AngularJS 单页应用程序时,我们需要确保 adal.js 和 Angular.js 是相同的版本,版本不匹配可能造成潜在问题。