权限管理在一个系统中是不可或缺的,一个成熟的系统框架必然含有一个完善的权限管理机制,笔者初次尝试设计权限管理框架,了解到普遍采用二进制算法方式实现的,这里总结一下分享给大家。
其实关于二进制算法,说白了就是运用了“按位与”、“按位或”、“按位异或”运算,下面看看这个例子
- public void testBinary() {
- // 判断是否有权限
- String binaryVal = "100";
- int i = Integer.parseInt(binaryVal, 2); //转化为二进制
- String binaryStr = "00010101";
- int j = Integer.parseInt(binaryStr, 2);
- if ((i & j) == i) {
- System.out.println("拥有删除权限");
- } else {
- System.out.println("没有删除权限");
- }
- }
-
- public void testBinary2() {
- // 兼容两者权限,只要任意一方拥有权限,则视为该用户具有该权限
- String adminBinary = "110110001";
- int i = Integer.parseInt(adminBinary, 2);
- String operatorBinary = "001100100";
- int j = Integer.parseInt(operatorBinary, 2);
-
- String lastBinary = Integer.toBinaryString((i | j));
- System.out.println(lastBinary);
- }
-
- public void testBinary3() {
- // 添加
- int c = 1;// ...0001
- // 查询
- int r = 2;// ...0010
- // 修改
- int u = 4;// ...0100
- // 删除
- int d = 8;// ...1000
-
- // 添加授权
- int usera = c | r | u; // 用户A有添加和修改权限
- int userb = c | d; // 用户B有添加和删除权限
- System.out.println(Integer.toBinaryString(usera));
- System.out.println(Integer.toBinaryString(userb));
-
- // 删除授权
- usera = usera & (~r); // 删除用户A的查询权限
- System.out.println(Integer.toBinaryString(usera));
- }
在数据库表中记录二进制的值采用数值类型存储即可。关于“按位与”等运算这里就不介绍了,大家自己百度下就知道了。
采用二进制来实现权限管理还是比较简单的。
|