与运算实现权限控制
与运算(“&”)计算方法:
参与运算的两个数据,按照二进制位进行“与运算”。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为1,则值为1。否则为0
例如:6 & 7 = 110 & 111 = 110 = 6
8 & 3 = 1000 & 11 = 0 = 0
十进制转化成二进制(整数):
看图
现有权限id父级菜单 ====子菜单(id是此项目系统特意设计的,不重要,主要看实现原理)
1 广告账户 ==== 1 订单概况 2 账户列表 4平台管理 8AD服务商
2 订单管理 ==== 1订单概况 2订单列表 4添加订单 8MID管理 16订单编号 32客服上传 64订单分配
3 数据分析 ==== 1数据概况 2账户报表 4消耗报表
4 产品管理 ==== 1产品概况 2产品列表
5 用户中心 ==== 1用户管理 2用户组管理
12 任务管理 ==== 1任务列表 2周报管理
23 财务管理 ==== 1财务概况 2财务列表
如:超级管理员的权限模板:{“1”:15,“2”:127,“3”:7,“4”:3,“5”:3,“12”:6,“23”:3}
其中key值1,2,3,4,5,12,23 代表父级菜单id value值15、127、7、3、3、6、3是权限阈值,子菜单id与阈值做与运算,不为0,则表示有权限,为0 表示没权限
如1广告账户下的权限阈值为15
1&15 = 1 & 1111 = 1 有订单概况这个权限
2&15 = 10 & 1111 = 10 = 2
.
.
.以此类推