分享

权限管理二进制算法(***)

 昵称21365845 2016-02-29

权限管理在一个系统中是不可或缺的,一个成熟的系统框架必然含有一个完善的权限管理机制,笔者初次尝试设计权限管理框架,了解到普遍采用二进制算法方式实现的,这里总结一下分享给大家。

其实关于二进制算法,说白了就是运用了“按位与”、“按位或”、“按位异或”运算,下面看看这个例子

  1. public void testBinary() {  
  2.     // 判断是否有权限  
  3.     String binaryVal = "100";  
  4.     int i = Integer.parseInt(binaryVal, 2);  //转化为二进制  
  5.     String binaryStr = "00010101";  
  6.     int j = Integer.parseInt(binaryStr, 2);  
  7.     if ((i & j) == i) {  
  8.         System.out.println("拥有删除权限");  
  9.     } else {  
  10.         System.out.println("没有删除权限");  
  11.     }  
  12. }  
  13.   
  14. public void testBinary2() {  
  15.     // 兼容两者权限,只要任意一方拥有权限,则视为该用户具有该权限  
  16.     String adminBinary = "110110001";  
  17.     int i = Integer.parseInt(adminBinary, 2);  
  18.     String operatorBinary = "001100100";  
  19.     int j = Integer.parseInt(operatorBinary, 2);  
  20.       
  21.     String lastBinary = Integer.toBinaryString((i | j));  
  22.     System.out.println(lastBinary);  
  23. }  
  24.   
  25. public void testBinary3() {  
  26.     // 添加    
  27.     int c = 1;// ...0001    
  28.     // 查询    
  29.     int r = 2;// ...0010    
  30.     // 修改    
  31.     int u = 4;// ...0100    
  32.     // 删除    
  33.     int d = 8;// ...1000    
  34.       
  35.     // 添加授权  
  36.     int usera = c | r | u; // 用户A有添加和修改权限    
  37.     int userb = c | d; // 用户B有添加和删除权限  
  38.     System.out.println(Integer.toBinaryString(usera));  
  39.     System.out.println(Integer.toBinaryString(userb));  
  40.   
  41.     // 删除授权  
  42.     usera = usera & (~r); // 删除用户A的查询权限  
  43.     System.out.println(Integer.toBinaryString(usera));  
  44. }  

在数据库表中记录二进制的值采用数值类型存储即可。关于“按位与”等运算这里就不介绍了,大家自己百度下就知道了。

采用二进制来实现权限管理还是比较简单的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多