Angularjs Angular.js:将Restangular和oauth ng结合起来
我们已经构建了一个实现OAuth2.0的RestFul API 现在我想使用和连接AngularJS前端 但是我如何才能让两者就oauth令牌进行交互呢? Oauth ng应该处理登录/注销和令牌刷新。 Restangular应从oauth ng获取access_令牌,以发送令牌和所有请求 我当前的代码是这样实现的Angularjs Angular.js:将Restangular和oauth ng结合起来,angularjs,oauth,restangular,Angularjs,Oauth,Restangular,我们已经构建了一个实现OAuth2.0的RestFul API 现在我想使用和连接AngularJS前端 但是我如何才能让两者就oauth令牌进行交互呢? Oauth ng应该处理登录/注销和令牌刷新。 Restangular应从oauth ng获取access_令牌,以发送令牌和所有请求 我当前的代码是这样实现的 angular .module('myapp', ['oauth','restangular'/* ... */ ]) .config(function ($rout
angular
.module('myapp', ['oauth','restangular'/* ... */ ])
.config(function ($routeProvider,$locationProvider,RestangularProvider,AccessToken) {
$routeProvider
.when('/access_token=:accessToken', {
template: '',
controller: function ($location, AccessToken) {
var hash = $location.path().substr(1);
AccessToken.setTokenFromString(hash);
console.log(AccessToken); //THIS WORKS
$location.path('/');
$location.replace();
}
})
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode({
enabled: true,
requireBase: true
}).hashPrefix('!');
RestangularProvider.setBaseUrl('https://myapi.local/');
// next line throws error
RestangularProvider.setDefaultHeaders({Authorization: 'Bearer ' + AccessToken.get()});
});
但此代码抛出一个错误“未知提供程序:AccessToken”。
似乎“AccessToken”在配置阶段还不可用。
但我不想在每个控制器中一次又一次地实现这个通用功能
连接两个模块的好方法是什么
谢谢你的帮助 AccessToken变量未注入到您正在使用的范围中。 您是否尝试将Restangular的令牌设置移动到实现承诺的程度。例如:
angular
.module('myapp', ['oauth','restangular'/* ... */ ])
.config(function ($routeProvider,$locationProvider,RestangularProvider) {
$routeProvider
.when('/access_token=:accessToken', {
template: '',
controller: function ($location, AccessToken) {
var hash = $location.path().substr(1);
AccessToken.setTokenFromString(hash);
RestangularProvider.setDefaultHeaders({Authorization: 'Bearer ' + AccessToken.get()});
console.log(AccessToken); //THIS WORKS
$location.path('/');
$location.replace();
}
})
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode({
enabled: true,
requireBase: true
}).hashPrefix('!');
RestangularProvider.setBaseUrl('https://myapi.local/');
});