使用BigInteger进行权限设计

首先,将界面中选好的菜单树,勾选完成后传到后台,后台通过转成字符串数组来进行设值

public static BigInteger sumRights(String[] rights){
        BigInteger num = new BigInteger("0");
        for(int i=0; i<rights.length; i++){
            num = num.setBit(Integer.parseInt(rights[i]));
        }
        return num;
}

通过上面方法,返回一个BigInteger,然后将这个数字保存在所属角色的菜单权限字段中(RIGHTS)

注意的是:这里的菜单ID必须是数字,String[] rights为所选菜单的数组,通过setbit方法,设置进num中

其次,再获取权限的时候,也一样,通过把之前存入的菜单权限的biginteger和菜单ID做对比来判断是否具有该菜单权限

public static boolean testRights(BigInteger sum,int targetRights){
        return sum.testBit(targetRights);
}

BigInteger使用例子

public class Main {

    public static void main(String[] args) {


        // 用于处理超出了Integer返回的大整数
        BigInteger num = new BigInteger("0");
        num = num.setBit(2);
        num = num.setBit(1);
        num = num.setBit(7);
        
        System.out.println(num);
        System.out.println(num.testBit(2));
        System.out.println(num.testBit(1));
        System.out.println(num.testBit(3));
        System.out.println(num.testBit(7));
        
        num = num.clearBit(7);
        System.out.println(num.testBit(7));
        /**
            134
            true
            true
            false
            true
            false
         */
        
    }
}

猜你喜欢

转载自www.cnblogs.com/tandi19960505/p/9863615.html