【发布时间】:2015-12-10 07:58:15
【问题描述】:
在 MEAN 应用程序中,我有一个带有 Auth 工厂的 authService 模块,其中包含 authFactory.isLoggedIn 函数:
// check if a user is logged in
// checks if there is a local token
authFactory.isLoggedIn = function() {
if (AuthToken.getToken())
return true;
else
return false;
};
所以我想我可以将它与 $routeProvider 的 resolve 属性一起使用,如下所示:
var MyModule = angular.module('app.routes', ['ngRoute']);
MyModule.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl : 'app/views/pages/home.html'
})
// login page
.when('/login', {
templateUrl : 'app/views/pages/login.html',
controller : 'mainController',
controllerAs: 'login'
})
// register page
.when('/register', {
templateUrl: 'app/views/pages/register.html',
controller: 'userCreateController',
controllerAs: 'register'
})
// upload page
.when('/upload', {
templateUrl : 'app/views/pages/upload.html',
controller: 'uploadController',
controllerAs: 'userupload',
resolve: function($q, $location) {
var deferred = $q.defer();
deferred.resolve();
if (!Auth.isLoggedIn) {
$location.path('/login');
}
return deferred.promise;
}
})
//logout
.otherwise({redirectTo: '/'});
$locationProvider.html5Mode(true);
}]);
很遗憾,这无法阻止未经身份验证的用户访问上传页面,而且我没有看到任何错误报告。 我已经看到了执行此操作的更简单方法的实例,例如:
.when('/upload', {
templateUrl : 'app/views/pages/upload.html',
controller: 'uploadController',
controllerAs: 'userupload',
isLoggedIn: true
})
但这也不起作用,这很遗憾,因为它要简单得多。
【问题讨论】:
标签: angularjs mean-stack