多级别控制Redis实现多用户多级别权限控制(redis多用户)
空气质量监测系统内嵌式后台管理系统中,多用户多级别权限控制是必不可少的,它不但可以有效限制用户的功能访问,还可以分开必要数据,极大的提升系统的安全性。 本文将介绍如何利用Redis实现多用户多级别权限控制。
空气质量监测系统内嵌式后台管理系统中,为实现多用户以及多级别的安全控制,可以采用基于Redis的方式,将用户的权限信息存储在Redis中进行控制。具体实现方法如下:
1、在Redis中建立一张权限表,每个用户一行记录:
例如:用户user1 对应一级权限为 A、B、C;
则记录类型为 redisHash 类型,Key为user1,field 为level1, value 为 ABC
2、建立具体功能权限的权限表,以及用户的具体功能权限表,格式为:
功能权限表:
例如: func_A、func_B、func_C 代表着功能 A,B,C
则 记录类型为redisHash,Key 为 level1权限, field 为func_A、func_B、func_C,value 为 1
用户功能权限表:
例如:user1 具有 A、B、C权限
则记录类型为redisHash,Key 为 user1,field 为 func_A、func_B、 func_C, value 为1
3、系统启动时, 读取用户权限表,存放在内存中。
例如:
// 从Redis中读取用户权限表
Map > userPermission = new HashMap>();
Jedis jedis = new Jedis(“localhost”);
Map userlevel = jedis.hgetAll(“user1”); //获取用户的权限等级
for(Map.Entry entry : userlevel.entrySet() ){
String level = entry.getValue();
String levelName = String.valueOf(level);
//读取用户对应levelName 下的功能权限
Map funcPermiss = jedis. hgetAll(“levelName”);
Set funcSet = new HashSet();
for(Map.Entry entryFunc : funcPermiss.entrySet() ){
if(“1”.equals(entryFunc.getValue())){
funcSet.add(entryFunc.getKey());
}
}
//放入内存中
userPermission.put(levelName, funcSet);
}
4、系统运行的过程中,根据用户的访问地址做权限限制。
例如:
// 当用户访问func_A 时,进行权限控制
String url = ”func_A”;
Set permissionSet = userPermission.get(“user1”); //获取用户的权限集而
if(permissionSet.contains(url)){ // 判断user1是否具有func_A权限
// 具有权限
}else {
// 无权限
}
通过以上方式,可以实现多级权限控制Redis实现多用户多级别权限控制,满足空气质量监测系统内嵌式后台管理系统的安全需求。