我需要某些路由来要求身份验证,我正在使用此模块:
https://github.com/enginous/angular-oauth
哪个有$ scope.authenticate,但我试图找出如何从$ routeProvider访问$ scope / that函数。我看到一个例子叫做工厂功能,但这并不是我想做的事情。
'use strict';
angular.module('app', [
'ngRoute',
'angularOauth',
'googleOauth',
'app.global',
'app.home',
'app.view'
]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'views/home/index.html',
controller: 'home'
});
$routeProvider.when('/view', {
templateUrl: 'views/view/index.html',
controller: 'view',
resolve: {
factory: checkAuth
}
}).otherwise({redirectTo: '/'});
$routeProvider.otherwise({redirectTo: '/'});
}]);
var checkAuth = function() {
};
答案 0 :(得分:0)
resolve的注释与Angular中其他任何位置使用的依赖注入注释相同。您的身份验证逻辑应该存在于可测试性和可重用性的服务中,因此在您的服务上注入和调用方法正是您应该做的:
resolve: {
auth: ['AuthenticationService', function (AuthenticationService) {
// Authentication service injected, call your method
return AuthenticationService.isAuthenticated();
}]
}
或
var checkAuth = ['AuthenticationService', function (AuthenticationService) {
// Authentication service injected, call your method
return AuthenticationService.isAuthenticated();
}];
angular.module('app', [
// ...
]).
config(['$routeProvider', function($routeProvider) {
// ...
$routeProvider.when('/view', {
templateUrl: 'views/view/index.html',
controller: 'view',
resolve: {
auth: checkAuth
}
})
// ...
}]);