我目前正在使用routeProvider来指向不同的页面,它可以正常使用身份验证,但需要为不同的用户添加不同的角色。网上的大多数答案都指向ui-router,但将所有内容迁移到那将是一件麻烦的事情,那么有没有办法用基本的routeProvider做到这一点?
答案 0 :(得分:1)
这是我在我的应用中使用的小版本:
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/admin', {
templateUrl: 'views/admin.html',
controller: 'AdminCtrl',
roles: ['admin']
});
}).run(function ($rootScope, $location, auth) {
$rootScope.$on('$routeChangeStart', function(e, next) {
if(next.roles && !auth.validRoles(next.roles)) {
e.preventDefault();
$location.path('/error-403');
}
});
});
“auth”是存储我的登录用户的服务,而validRoles方法检查用户是否具有该视图的角色。