权限管理二进制算法

59 篇文章 2 订阅
45 篇文章 0 订阅

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

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

	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));
	}

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

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

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值