多级别控制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实现多用户多级别权限控制,满足空气质量监测系统内嵌式后台管理系统的安全需求。


数据运维技术 » 多级别控制Redis实现多用户多级别权限控制(redis多用户)