BigInteger权限判断示例
2016-06-21 14:43
218 查看
这里我介绍一种很常用,也比较Professor的权限控制思路。
把具体的权限设置为一个正整数值,如果一个用户有多个权限的话,比如1,2权限,那么我们设置值的时候就是num.setBit(1),num.setBit(2),然后把返回的num值保存在session中,要验证是否有权限的话,只要从session中取得保存的num,然后执行下num.test(权限值),如果返回true就是有权限的,否则无权限。下面例子:
[java] view
plain copy
package com.hundsun.network.post.settle.job;
import java.math.BigInteger;
public class TestBigInteger {
public static void main(String[] args) {
//初始
BigInteger num = new BigInteger("0");
num = num.setBit(2);
num = num.setBit(1);
System.out.println(num);
System.out.println(num.testBit(2));
System.out.println(num.testBit(1));
System.out.println(num.testBit(3));
}
}
返回的结果是:
6
true
true
false
为什么是6呢? 6= 2^2 + 2^1 其实计算的值是2的权的和
好处是,session中存储权限的空间很小,一个整数就代表了所有的权限,验证的时候计算速度也很快。
把具体的权限设置为一个正整数值,如果一个用户有多个权限的话,比如1,2权限,那么我们设置值的时候就是num.setBit(1),num.setBit(2),然后把返回的num值保存在session中,要验证是否有权限的话,只要从session中取得保存的num,然后执行下num.test(权限值),如果返回true就是有权限的,否则无权限。下面例子:
[java] view
plain copy
package com.hundsun.network.post.settle.job;
import java.math.BigInteger;
public class TestBigInteger {
public static void main(String[] args) {
//初始
BigInteger num = new BigInteger("0");
num = num.setBit(2);
num = num.setBit(1);
System.out.println(num);
System.out.println(num.testBit(2));
System.out.println(num.testBit(1));
System.out.println(num.testBit(3));
}
}
返回的结果是:
6
true
true
false
为什么是6呢? 6= 2^2 + 2^1 其实计算的值是2的权的和
好处是,session中存储权限的空间很小,一个整数就代表了所有的权限,验证的时候计算速度也很快。
相关文章推荐
- JDBC连接池
- ugui在运行时改变RectTransform的大小
- 中位数-输油管道问题
- FastReport 自定义数据集
- Bootstrap三种表单布局的使用方法
- 吐司
- 第十四周阅读程序
- dubbo :Forbid consumer
- redis list学习
- Hibernate中持久化上下文的flush操作之一ALWAYS
- MVP in android
- 生产者/消费者模式[3]:环形缓冲区
- 2016.6.21——Add Binary
- ReactNative环境配置
- 【linux】linux服务管理
- 扛得住双11的Mysql---mysql优化
- canvas 变形记——移动、旋转、缩放、变形
- PHP分页初探 一个最简单的PHP分页代码的简单实现
- php写ecshop安装
- 缩放ImageView