angular--权限控制路由

angular实现权限控制路由

前端去实现下根据数据开控制路由,我感觉挺扯淡的,但是公司既然有需求,那我们的设计就要跟着需求走。下面是我实现权限控制路由的一种方法。
解决的思路:
    1.首先从后台获取该用户的权限
    2.建立一个server,用来判断权限数组里是否有此权限
    3.根据权限来显示路由
1.自定义服务
angular.module("manage.common")
    .factory('permissions', function($rootScope) {
        var permissionList = $rootScope.permissionList;
        return {
            isPermission: function(permission) {
                if (permission) {
                    if (typeof(permission) == "string") {
                        if (permissionList.indexOf(permission) > -1) {
                            return true;
                        }
                    }
                }
                return false;
            }
        };
    });
2.定义全局的方法
$rootScope.isPermission = function(id) {
        return permissions.isPermission(id);
    }
3.路由权限控制
app.run(function($rootScope, $location,$state, permissions) {
     $rootScope.isPermission = function(id) {
        return permissions.isPermission(id);
    }
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
      var permission = toState.permission;  
      if (toState.name!="login"&&!permissions.hasPermission(permission)) {
        event.preventDefault();
        $state.go("login");
      }
    });
  });
4.路由控制
.state("information.goods", {
            url: "/goods",
            templateUrl: "information/templates/goods.html",
            controller: 'information.goods',
            permission: 'C4'//权限的id
        })
5.页面路由控制
<li class="nav-item" ng-class="{'router_checked':currentTab.search('backstage.concierge') >= 0}" ng-show="isPermission('C4')">
                <a class="route" ui-sref='backstage.concierge'>
                   管理员管理
                </a>
            </li>

转载于:https://www.cnblogs.com/hyhufei/p/7413261.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值