前端页面按钮权限精确到按钮级别

前端页面按钮权限精确到按钮级别

1.在页面上定义好菜单按钮资源,然后用户分配角色,角色分配资源。

在这里插入图片描述

2.用户登录后,调用接口获取用户所拥有的菜单和按钮权限,动态显示左导航菜单栏后,获取后将权限加密后存入到storage。

在这里插入图片描述

3.所有页面按钮或者链接根据需要增加标签checkPermission

在这里插入图片描述

4.引入共用的JS文件

  • 将所有校验权限元素隐藏
  • 从storage获取到所有的权限解密
  • 判断当前权限是否在权限集合中,若存在则显示相关元素。
function checkPermission(privateKey){
	  var permissions = $('[checkPermission]');
	  if(permissions != null  && permissions.length > 0){
	  	$('[checkPermission]').hide();
	  	var decrypt = new JSEncrypt();
		  decrypt.setPrivateKey(privateKey);
		  var permission = window.localStorage.getItem("permission");
		  if($.isEmpty(permission)){
		  	return;
		  }
		 var url = decrypt.decryptLong(permission);
		 if(!url){
			 return ;
		 }
		  var permissionArr = url.split(",");
		  permissionArr = permissionArr.filter(item=>item!="");
	  	for(var i = 0; i< permissions.length; i++){
	  		var temp = $(permissions[i]).attr("checkPermission");
	  		if(permissionArr.indexOf(temp)>=0){
	  			$(permissions[i]).show();
	  		}
	  	}
	  }

}

function checkUrlPermission(privateKey,perUrl){
	var decrypt = new JSEncrypt();
	  decrypt.setPrivateKey(privateKey);
	var permission = window.localStorage.getItem("permission");
	if($.isEmpty(permission)){
		return false;
	}
	 var url = decrypt.decryptLong(permission);
	 if(!url){
		 return false;
	 }
	  var permissionArr = url.split(",");
	  permissionArr = permissionArr.filter(item=>item!="");
	  
	return permissionArr.indexOf(perUrl)>=0;
		
	
}

function getUrlParam(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
	var r = window.location.search.substr(1).match(reg); //匹配目标参数
	if (r != null) 
		return unescape(r[2]);
	return null; //返回参数值
}


JSEncrypt.prototype.encryptLong=function (d){
  var obj = this;
  var maxLength = 117;
  try {
    var lt = "";
    var ct = "";

    if (d.length > maxLength) {
      lt = d.match(/.{1,117}/g);
      var flag = false;
      lt.forEach(function (entry) {
        var t1 = obj.encrypt(entry);
        if(flag){
        	ct += "_"+t1;
        }else{
        	ct += t1;
        	flag = true;
        }
        
      });
      return (ct);
    }
    var t = obj.encrypt(d);
    return t;
  } catch (ex) {
    return false;
  }
}

JSEncrypt.prototype.decryptLong = function (string) {
	var obj = this;
    //var maxLength = 128;
    try {
    	var arr = string.split("_");
    	var y = "";
       for(var i = 0; i < arr.length; i++){
    	   y+= obj.decrypt(arr[i]);
       }
        return y;
    } catch (ex) {
        return false;
    }
};
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值