小编spu*_*eri的帖子

Angular ui-router:如何防止访问状态

您好我是angularJS的新手,并一直试图根据用户标准阻止访问某些状态.

这来自ui-router的常见问题解答中描述了我想要做的事情,但我无法让它正常工作.我需要做什么,但在数据对象中完全要做到这一点?

(我看到有人在一些博客文章教程中投入"真实"并像我一样使用它,但这似乎没有用,因为我得到一个错误,说明needAdmin没有定义)

这是我的代码:

angular.module('courses').config(['$stateProvider',
    function($stateProvider) {
        // Courses state routing
        $stateProvider.
        state('listCourses', {
            url: '/courses',
            templateUrl: 'modules/courses/views/list-courses.client.view.html'
        }).
        state('createCourse', {
            url: '/courses/create',
            templateUrl: 'modules/courses/views/create-course.client.view.html',
            data: {
                needAdmin: true
            }
        }).
        state('viewCourse', {
            url: '/courses/:courseId',
            templateUrl: 'modules/courses/views/view-course.client.view.html'
        }).
        state('editCourse', {
            url: '/courses/:courseId/edit',
            templateUrl: 'modules/courses/views/edit-course.client.view.html',
            data: {
                needAdmin: true
            }
        });     

    }
]);


angular.module('courses').run(['$rootScope', '$state', 'Authentication', function($rootScope, $state, Authentication) {
  $rootScope.$on('$stateChangeStart', function(e, to) {

    var auth = Authentication;

    console.log(auth.user.roles[0]);
    if (to.data.needAdmin && auth.user.roles[0] !== 'admin') {
      e.preventDefault();
      $state.go('/courses');
    }

  }); …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui-router

40
推荐指数
2
解决办法
4万
查看次数

标签 统计

angular-ui-router ×1

angularjs ×1

javascript ×1