我正在使用角度项目。当我登录到应用程序时,我将从登录服务收到的access_token保存到$ cookie中。此access_token将在2分钟后过期。 登录后,为了获得最后的功能,我必须使用$ http将此access_token发送到服务以获取有效响应。 一旦此access_token在2分钟后过期,我正在呼叫一个服务,该服务将重新生成access_token并再次保存$ cookie。 没有access_token,我的其他功能将不起作用。在Angular js中调用其他ajax调用
基本上我需要检查访问令牌是否存在于$ cookie中,或者不在应用程序中的每个服务调用之前。如果访问令牌不存在,那么需要使用$ http使用另一个服务调用重新生成它,然后将其保存回cookie中,然后将其保存到功能的期望服务调用中。并且如果存在令牌,则进行期望的服务呼叫。
我的功能之一是:
mPosController.controller('offerController', ['$scope', '$route', '$cookies', '$rootScope', 'mosServiceFactory', 'ngDialog', '$modal', '$q', function ($scope, $route, $cookies, $rootScope, mosServiceFactory, ngDialog, $modal, $q) {
mosServiceFactory.viewAllOffers('page=0').then(function (data) {
//Do the desire functionality
});
}]);
我的服务宗旨是:
mPosServices.factory('mosServiceFactory', function ($http, $rootScope, $cookies,$q) {
return{
viewAllOffers: function (page) {
var allOffers = $http({
method: "get",
url: "myserviceurl?enrollmentId=" + $rootScope.enrollMentId + "&" + page + "&size=10&access_token=" + $cookies.get('access_token'),
});
return allOffers;
},
refresh_token: function() {
var refreshToken = $http({
method: "get",
url: "myserviceurl/oauth/token?grant_type=refresh_token&client_id=restapp&client_secret=restapp&refresh_token=" + $cookies.get('refresh_token'),
})
return refreshToken;
},
}
});
所以调用viewAllOffers(),我需要检查的access_token存在于$ cookie或没有,如果不是之前然后调用refresh_token服务。
我该如何做到这一点?
您可以尝试使用'http http'服务中的'request'拦截器,[here](https://docs.angularjs。org/api/ng/service/$ http)是一些文档,向下滚动到**拦截器**部分 – MiTa