采用BigInteger进行的权限设计
来源:互联网 发布:cnki数据库入口 编辑:程序博客网 时间:2024/06/01 19:33
最近看到了一个项目的权限是根据bigineger来进行计算的菜单权限,觉得还是不错,存储上只需要存储在一个字段里就可以了,通过计算算出该角色的菜单权限即可,效率也非常的快,放在session中也非常的小,下面简单说一下思路。
首先,将界面中选好的菜单树,勾选完成后传到后台,后台通过转成字符串数组来进行设值
通过上面方法,返回一个BigInteger,然后将这个数字存入所属角色的菜单权限字段中。注意的是:这里的菜单ID必须是数字,String[] rights为所选菜单的数组,通过setbit方法一一设置进num中。
其奖,再获取权限的时候,也一样,通过把之前存入的菜单权限的biginteger和菜单ID做对比来判断是否具有该菜单权限
sum为对应角色的菜单权限值,targetRights为具体菜单ID,通过biginteger的testBit方法来判断是否存在里面,如果存在就返回true,不存在就返回false.
biginteger通过set的值,其实是2的权的和。下面有一个列子:
num的值为6,是这样计算的2^2+1^2=6。通过这种方式,不管是解析和查询其实效率都是很高的,占用session的空间也非常的小,不为是一个好的权限设计思路。
转自:http://blog.csdn.net/hys21/article/details/51161381
阅读全文
0 0
- 采用BigInteger进行的权限设计
- 采用BigInteger进行的权限设计
- 【权限设计】采用BigInteger进行的权限设计
- 数据库权限优化,权限设计BigInteger
- 采用long型数据的每一个二进制位代表一种权限,进行票据权限保存、取消、认证
- shiro 进行权限管理 —— 使用BigInteger进行权限计算获取菜单
- BigInteger权限判断示例
- BigInteger权限判断示例
- BigInteger权限判断示例
- BigInteger权限判断示例
- BigInteger权限判断
- BigInteger权限判断示例
- 关于BigInteger控制权限
- 采用按位与(&)按位或(|)进行权限检查的简单例子
- BigInteger:可以让超过Integer范围内的数据进行运算
- php页面访问时,统一进行权限验证的设计
- php页面访问时,统一进行权限验证的设计
- AppBox升级进行时 - 扁平化的权限设计
- Java基础知识
- 设计模式--适配器模式、外观模式
- 利用UiAutomator写一个首页刷新的稳定性测试脚本
- Spark的资源管理和调度模式
- oraacle 几个函数的用法
- 采用BigInteger进行的权限设计
- datastage登陆报错Failed to authenticate the current user against the selected Services Tier
- 设计模式--代理模式
- (八)BaseTableView的简单使用
- 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
- Light-Head R-CNN 阅读笔记
- 突变:mongoose-os的系统配置API改变
- 前端
- map