【Python】基于自定义权限编码的树状权限管理系统设计

本文介绍了一种基于Python的自定义权限编码方法,用于设计树状权限管理系统。通过将树状权限转化为字典编码,再进行解码,实现权限的合理划分和管理。管理员可以方便地对员工进行权限授权,限制或允许访问特定功能。
摘要由CSDN通过智能技术生成

目标

权限管理是企业实现安全管理的必要因素,如何设计权限控制让员工在不越界的情况下还能自由发挥是权限管理系统设计的难题。

资金充足的企业往往会选择购买市场上OA系统,每年付费几十万,省去了设计维护系统之余,还提高了员工的办公效率。主流的OA系统有泛微的e-cology。
在这里插入图片描述

而对于一些私企,往往会选择自己搭建系统网站,每年省下一大笔支出,同时还保护了公司的商业机密。而这样这些网站,往往需要开发工程师设计一个合理实用的权限管理系统。

而本文将基于自定义权限编码设计树状权限管理系统,给公司网页各功能进行权限的编码,并给员工授予相应的权限编码,实现了权限的严格且合理的划分,管理员更为便利地给各部门员工授权。

权限编码

本文基于python字典格式设计了一款编码,可以将树状的权限以字典的形式进行编码,同时通过解析字典来解码,获取相应的权限信息。
在这里插入图片描述

树状字典

首先将树状权限转换成python字典,以字典包含字典的方法实现树状结构。

num = {
   
    '运营': {
   
        '数据库': {
   
            '运营数据库': 0,
            '产品数据库': {
   
                '产品查询': 0,
                '下单价格': 0
                        }
                },
        '数据分析':0,
        '订单管理':{
   
            '订单文件': 0
                }
            },
    
    '人事': {
   
        '数据库': {
   
            '人事数据库': {
   
                '员工信息': 0,
                '人事结构': 0
                            },
                },
        '数据分析':{
   
            '打卡出勤': 0,
            '绩效': 0
                },
        '订单管理':0
            }
}

转换数字字典,便于数据存储和解码。可以看到,以权限的先后顺序进行1,2,3,…编码。比如在一层中,部门以1,2分别表示运营和人事。而在第二层中,以1,2,3分别表示数据库,数据分析和订单管理这三个大权限。而后面的小权限也依次以数字进行表示。

下面的num字典为具备所有权限的编码。

而user_code字典为只具备运营的部分权限的编码,且不具备查看订单文件的权限。说明权限限制可以通过直接删除那里的字典,或者让字典的值为0,来达到权限限制。

num = {
   
    '1': {
   
        '1': {
   
            '1': 0,
            '2': {
   
                '1': 0,
                '2': 0
                        }
                },
        '2':0,
        '3':{
   
            '1': 0
                }
            },
    
    '2': {
   
        '1': {
   
            '1': {
   
                '1': 0,
                '2': 0
                            },
                },
        '2':{
   
            '1': 0,
            '2': 0
                },
        '3':0
            }
}


user_code = {
   
    '1': {
   
        '1': {
   
            '1': 0,
            '2': {
   
                '1': 0,
                '2': 0
                        }
                },
        '2':0,
        '3':0
            }
    
}

权限解码

权限列表

要实现权限解码,需要建立权限列表,列表里面存放相应的权限函数。比如’database’, ‘analysis’, 'order’等,这些权限函数可以是页面对应的后端函数,执行函数前先进行权限判断,从而使用权限的管理。

权限列表的命名需严格规范,比如list_0_1_1_2 表示运营1-数据库1-产品数据库2里面的函数,有’search’, ‘price’
根据编码好的树状字典,编写权限列表。解码的时候,便根据编码解码,得到该员工所拥有的权限函数。

# list_0 = ['运营', '人事']
list_0 = ['', '']


# list_0_1 = ['数据库', '数据分析', '订单管理']
list_0_1 = ['database', 'analysis', 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值