第一种权限:菜单栏展示还是不展示的权限(粗颗粒)
实现方法,在SYS_ROLE表中添加一个字段rights,通过
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;
}
public static boolean testRights(BigInteger sum,int targetRights){
return sum.testBit(targetRights);
}
这一段代码来验证有没有权限,来空值hasMenu是true还是false来空值展示还是不展示
第二种权限:页面出现增删改查的权限,主要针对页面有增删改以及查的权利,假如菜单有权限,但是这里设置的没有查看的权利,那么就会出现菜单栏有这个图标,但是无法打开这个页面,或者即使打开这个页面也没有办法查看里面相关信息的权限。(细颗粒)
实现方法:通过
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;
}
这一段代码在表SYS_ROLE中设置,add_qx,del_qx,edit_qx,cha_qx,四字字段来设置一个值,和上面的rigths的值的道理是一样的,然后通过代码逻辑判断来给前台传四个值add,del,edit,cha四字字段的Boolean值来判断有没有权限
map.put("add", (RightsHelper.testRights(map.get("adds"), MENU_ID)) || isAdmin?"1":"0");
map.put("del", RightsHelper.testRights(map.get("dels"), MENU_ID) || isAdmin?"1":"0");
map.put("edit", RightsHelper.testRights(map.get("edits"), MENU_ID) || isAdmin?"1":"0");
map.put("cha", RightsHelper.testRights(map.get("chas"), MENU_ID) || isAdmin?"1":"0");
public static boolean testRights(BigInteger sum,int targetRights){
return sum.testBit(targetRights);
}
第三种权限:页面某些特定图标的权限,比如导入导出表格,下载等等,这个权限必须在有某个页面查看的权利的基础上(细粒度)
实现方法:
页面某些特定图标的权限,比如导入导出表格,下载等等,这个权限必须在有某个页面查看的权利的基础上(细粒度)(shiro项目中来的四)