Angular.js:结合 Restangular 和 oauth-ng
Angular.js: Combine Restangular and oauth-ng
我们构建了一个 RestFul API 实现 OAuth 2.0
现在我想使用 Restangular and oauth-ng
连接 AngularJS 前端
但是我怎样才能让两者就 oauth 令牌进行交互?
Oauth-ng 应该处理 login/logout 和令牌刷新。
Restangular 应从 oauth-ng 中获取 access_token 以随所有请求发送令牌。
我现在的代码是这样实现的
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()});
});
但是这段代码会报错"Unknown provider: 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/');
});
我们构建了一个 RestFul API 实现 OAuth 2.0
现在我想使用 Restangular and oauth-ng
连接 AngularJS 前端但是我怎样才能让两者就 oauth 令牌进行交互?
Oauth-ng 应该处理 login/logout 和令牌刷新。 Restangular 应从 oauth-ng 中获取 access_token 以随所有请求发送令牌。
我现在的代码是这样实现的
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()});
});
但是这段代码会报错"Unknown provider: 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/');
});