python + mysql 用户管理权限管理分析
权限管理系统设计
基于用户的权限管理
用户权限表:
aid | access |
---|---|
1 | 订单管理 |
2 | 用户管理 |
3 | 菜单管理 |
4 | 权限分配 |
5 | bug管理 |
用户信息:
uid | username | pwd |
---|---|---|
1 | 默默 | 123456 |
2 | 安安 | 15616 |
用户权限关系表:
rid | user_id | access_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 5 |
python程序实现:
某个用户登录后,查看自己拥有的所有权限
#_*_ coding:utf-8 _*_
import pymysql
username=input('请输入你的用户名:')
password=input('请输入你的密码:')
conn=pymysql.connect(host='localhost',user='root',password='',database='access')
cursor=conn.cursor()
sql= "select * from user where username=%s and password =%s"
cursor.execute(sql,[username,password])
result=cursor.fetchone()
if result:
print('登录成功,欢迎%s'%username)
sql="select access.access from(select aid from relationship where userid=(select uid from user where username=%s))as A left JOIN access on access.access=A.aid "
cursor.execute(sql,username)
cont=cursor.fetchall()
print(cont)
print('你拥有以下权限',cont)
else:
print('登录失败')
优化角色权限管理
由于基于用户的权限管理扩展性差,在同类用户权限调整后用户设计修改数据量大,故需要基于用户所具有的角色进行权限的分配管理
基于角色的权限管理(通过对用户的特性归纳出常用权限,单独设定一张表)
用户信息:(若存在用户多权限的情况,则可对用户信息表进行分裂,设计用户-角色表)
uid | username | pwd | role_id |
---|---|---|---|
1 | 默默 | 123456 | 1 |
2 | 安安 | 123456 | 2 |
权限 :
aid | access |
---|---|
1 | 订单管理 |
2 | 用户管理 |
3 | 菜单管理 |
4 | 权限分配 |
5 | bug管理 |
角色表:
did | department |
---|---|
1 | IT部门 |
2 | 咨询员工 |
3 | bug管理 |
角色权限管理:
mid | department_id | access_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 3 |