Java web 后台菜单权限验证方法

首先有个菜单表,和权限表,用户表,

用户表id 关联权限id 权限表中要有个 权限字段

下面开始说权限字段中的数据存什么:

这里我们运用BitInteger这个类

1.在创建角色权限时首先运用 BitInteger中setBit( int);方法将所有菜单id依次set进创建的BItInteger中

并保存到我们的权限表中,

2.在查询/判断权限时用菜单id依次和权限字段用BitInteger中的testBit(int)进行对比 返回true则有权访问,false则无权访问;

注:菜单id一定要是数字

以上时大概流程,和思路。

    public static void main(String[] args) {
        String [] strArray = {"20","2","300","4","5","6","12"};
        BigInteger bit  = new BigInteger("0");
        for(int i = 0;i             System.out.println(bit);
            bit = bit.setBit(Integer.parseInt(strArray[i]));
        }
        System.out.println(bit);
        boolean ok = bit.testBit(5);
        System.out.println(ok);
    }

输出:

0
1048576
1048580
2037035976334486086268445688409378161051468393665936250636140449354381299763336706184445956
2037035976334486086268445688409378161051468393665936250636140449354381299763336706184445972
2037035976334486086268445688409378161051468393665936250636140449354381299763336706184446004
2037035976334486086268445688409378161051468393665936250636140449354381299763336706184446068
2037035976334486086268445688409378161051468393665936250636140449354381299763336706184450164
true

以上时测试类方法,下面说下菜单权限的详细思路,

登陆成功后,进入读取菜单,1

1.将表中所有菜单读出放到listAllMenu中,然后创建一个新List用于存放有权限的菜单

2查询出当前用户的权限中的权限字段 role,

3遍历listAllMenu 读取菜单id然后和权限role用BitInteger中testBit()方法进行对比将返回true的对象放入新建的list中

(注:由于菜单涉及到父级菜单/子菜单,所以最好将对比打包成一个递归方法)

最后将新创建的list返回前台;

 

 

 

各位编程之路重在理解和动手所以就不粘详细代码了

 

这只不过是本人最基本的理解肯定有漏洞和不足指出,

在此发表的是实际工作中所遇到的功能思路,和一些异常,有些可能不堪一提,但却是是绊住我的问题都会记录在这里,也就当个笔记吧.

你可能感兴趣的:(功能思路总结)