AngularJS中的授权

时间:2015-05-28 20:35:39

标签: angularjs

我目前正在使用routeProvider来指向不同的页面,它可以正常使用身份验证,但需要为不同的用户添加不同的角色。网上的大多数答案都指向ui-router,但将所有内容迁移到那将是一件麻烦的事情,那么有没有办法用基本的routeProvider做到这一点?

1 个答案:

答案 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方法检查用户是否具有该视图的角色。