权限管理算法

来源:互联网 发布:java猜数游戏界面代码 编辑:程序博客网 时间:2024/06/04 19:10

多数支撑系统或管理系统都有管理员、角色、权限管理,不同角色拥有不同权限,不同管理员拥有不同角色。如何实现以上需求:

  1. 通过数据库N对N的方式实现,通过第三张表管理管理员与角色、角色与权限之间的关系。
  2. 通过二进制方式实现,具体方法如下:
  • 为每一个操作权限设置一个唯一的整数值,如:删除A---0  修改A---1  添加A---2  删除B---3  修改B---4  添加B---5。
  • 如果某角色拥有权限:添加A---2;删除B---3;修改B---4,那用户的权限值 purview =2^2+2^3+2^4=28,也就是2的权的和,化成二进制可以表示为11100。
  • 如果想验证是否拥有删除A---0,可以用purview&2^0==2^0?true:false;
  • 如果想验证是否拥有删除A---0和删除B---3的权限,可以用purview&(2^0+2^3)==(2^0+2^3)?true:false;
  • 几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!Java的int类型最多可以储存11个权限和.如果超过,可以选择其它数据类型,而且建议不同模块,使用多个权限变量。