AngularJs和Angular-UI-Router路由权限

8 javascript user-permissions angularjs angular-ui-router

我正面临着如何根据从服务器获取的远程数据实现路由限制的问题.

假设我有以下配置文件:

angular.module('myApp')
  .config(['$stateProvider', function($stateProvider) {

    $stateProvider
      .state('post', {
        url: '/post/:post_id',
        abstract: true,
        [...]
    })
      .state('post.view', {
        url: '/view'
        [...]
    })
      .state('post.edit', {
        url: '/edit'
        [...]
    })

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

我的申请要求是:

  • 帖子有所有者(帖子的创建者),其域名可以是公共的或私有的.

  • 如果域是公共的,则每个用户都可以看到帖子(进入状态post.view),如果不是(域是私有的),只有所有者才能看到它.

  • post.edit只有业主才能进入该州.

要做到这一点,最好的方法是什么?

我正在考虑有一个解决承诺,从服务器(post的域和通讯用户角色)获取数据,执行所需的检查并相应地返回(承诺已解决或拒绝).

但是,如果他没有被授权,我将如何将用户重定向到正确的状态?例如,如果帖子的域是公共的,则尝试访问该post.edit状态的普通用户应该被重定向到该post.view状态...但是如果帖子的域是私有的,则应该呈现未授权的访问页面.在决心上直接做到这一点是一个好方法吗?有哪些替代方案?

ash*_*q.p 8

看看这个基于角色的路由授权的精彩教程:

基于角色的授权

另外看看这个stackoverflow的答案,这里有基于登录的条件路由,你可以使用相同的逻辑角色为你的目的,

Ui-router,基于权限的路由