项目中需要为按钮添加权限,因为后台的特殊,正常来说可以进行对接口拦截数据,但是因为项目是在后面进行修改的,所以只能是前台进行处理
处理办法1
在菜单树中就获取到按钮的权限,因为按钮是相对菜单页面的,在加载菜单的时候页面的按钮其实也是知道的了,这种不知道为什么没有被采用,据说是后台项目跨域了,不好处理
处理办法2(目前采用的,这种虽然有点low的样子)
就是在前台处理,点击按钮的时候发送请求,处理的时候为了减轻服务器的压力,想到了一个简便的办法
方案一 :在页面加载之前就获得到所有按钮的权限,然后在点击按钮的时候进行判断是否有权限,如果有就执行,没有就return false
问题:这种办法有一个弊端 :改动比较大,jsp和html同时需要改,如果有trigger事件还需要单独处理,所以i想到了下面方案
方案二:控制按钮的显示和隐藏,有权限就显示没有就隐藏掉
问题:“闪现” display由show改为none都存在的问题
方案三:针对方案二出现的问题,将none改为show 先用公共的css把所有的按钮都隐藏,然后在页面中判断有权限就显示,没有就不显示,
问题:这种只是适合页面没有操作按钮的显示和隐藏的,如果有显示和隐藏,将不适用,因为优先级的问题,页面中控制显示的优先级高于css样式控制的优先级,所以就会导致,页面中某个按钮实际没有权限,但是因为js操作问题,就让他显示了
讲了这么多,下面最终方案
终极方案:
第一步:在css的样式中设置按钮的权限优先级最高
[assign-url]{display:none !important}
第二步:在页面的头部引入js,注意放在head里面,保证他是最先执行,
第三步:找出页面中所有的按钮权限所对应的url,用数组保存,然后遍历获的权限,
var urlList=["button1:permission","button2:permission"]
第三步:结合第二步的基础上,有权限的时候不是去显示,而是用js代码删除所对应的属性assign
原文地址:https://www.cnblogs.com/pengfei25/p/10612410.html