内容回顾:
1. 中间件
- 中间件是什么?
- 有什么要注意的?
- 应用场景?
2. Form组件
- Django Form组件是什么?
- 功能有什么?
- 用户请求验证
- 自动生成HTML标签(保留上次输入内容)
- 集成错误信息
- 如何使用?
定义:
- 类
- 字段:validates=[ ]
- 方法:clean_字段名称
使用:
- GET
- 实例化
- 返回
- POST
- 实例化(request.POST)
- is_valid
- cleaned_data
- errors
注意:ChoiceField数据源实时更新
今日内容:
1. 权限管理
- 必会
- 组件
内容详细:
1. 需求分析:
准备:创建独立app,
rbac
app01
分配权限,URL
2. 设计
第一版:
权限表:
ID url title is_menu
1 /index/ 首页 False
2 /userinfo/ 用户列表 True
3 /userinfo/add/ 添加用户 True
4 /userinfo/del/(\d+)/ 删除用户 False
5 /userinfo/edit/(\d+)/ 修改用户 False
用户表:
ID username password ....
1 番禺 123
2 夹缝 123
3 果冻 123
4 鲁宁 123
权限用户关系表:
用户ID 权限ID
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
3 1
4 1
4 2
4 3
第二版:
用户表:
ID username password ....
1 番禺 123
2 夹缝 123
3 果冻 123
4 鲁宁 123
角色表:
ID title
1 CEO
2 CTO
4 COO
5 部门经理
6 技术员
用户和角色关系表:
用户ID 角色ID
1 1
1 2
1 4
2 5
3 6
4 6
权限表:
ID url title
1 /index/ 首页
2 /userinfo/ 用户列表
3 /userinfo/add/ 添加用户
4 /userinfo/del/(\d+)/ 删除用户
5 /userinfo/edit/(\d+)/ 修改用户
角色权限关系表:
角色ID 权限ID
1 1
3. 权限录入:
CEO:番禺
/userinfo/
/userinfo/add/
/userinfo/edit/(\d+)/
/userinfo/del/(\d+)/
/order/
/order/add/
/order/edit/(\d+)/
/order/del/(\d+)/
总监:鲁宁
/userinfo/
/userinfo/add/
/order/
/order/add/
经理:肾松
/userinfo/
/order/
业务员:肾松,文飞,成栋
/order/
PS: 去重
问题:
1. 用户登录
- 获取当前用户具有的所有角色
- 获取当前用户具有的所有权限
- 获取当前用户具有的所有权限(去重)
4. 权限梳理
a. 创建rbac app
b. 创建表结构,rbac,基于角色权限控制
- 三个类
- 五张表
c. 基于Django admin录入权限数据
python manage.py createsuperuser
- root
- root!2345
d. 用户登录程序
- 获取当前用户具有的所有权限(去重)
- 获取权限中的url,放置到session中
rabc.service.init_permission
def init_permission(user,request):
pass
e. 中间件
- 白名单
- 获取请求URL
- session保存的权限信息
- 循环url,re.match(db_url, current_url)
5. rbac中的代码:
- models.py
- admin.py
- service.init_permission.py
- middlewares.rabc.py
配置文件中:
VALID_URL = [
"/login/",
"/admin.*"
]
- 新创建procject
- app01
======引入权限控制=====
- 拷贝rbac
- 使用django admin
- 配置:
- 中间件
- 白名单
- 用户登录:
- 初始化权限信息 init_permission(user,request)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步