—super—

博客园 首页 新随笔 联系 订阅 管理

内容回顾:
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)

posted on   —super—  阅读(156)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示