使用位运算控制角色权限,这样替代了传统的rbac,使用位运算,使得逻辑更加清楚,操作数据库次数变少...
这里面主要是二进制和十进制之间的转换,在python中 bin()方法可以直接查看一个十进制数字的二进数数值, 比如你现在有三个角色,那就对这三个角色没人赋予一个键用来存储十进制数字,(通常是1-----7之间) ,而权限也需要对其进行赋予一个键用来存储十进制数字(通常1,2,4),不懂得这几位数字的小伙伴可以在python中使用'&'方法,
当进行权限认证的时候,查看这个接口此用户能不能访问 直接使用它自己的auth和权限的node auth &node 比较 ,如果大于0 那就是可以进入
而这其中的 '|' ,' ^' 可以用在修改权限 "|" :比如 用户的auth | 权限的node 1|4时 bin(1) == 0b1 bin(4) == 0b100 那么他们| 就等于 0b101 也就是5 这样应该就可以发现其中的规律 当其中位数相等时那一位数等于0
而'^'和其正好相反,相同位数为0 相异为1 所以 1 ^4 == 5 0b001 ^ 0b100 == 0b101
这两个正好可以用来做修改权限 正好相反嘛, 这个东西看的就是位数 0b001位1 这个位数是从右往左读的 最右面是第一位 没有的位数会填充为0