1 1.权限控制
2
3 -什么是权限?
4
5 一个URL对应一个权限
6
7 -表结构 4个model 6张表
8
9 菜单表
10
11 -title 标题
12
13 -icon 图标
14
15 -weight 权重
16
17 权限表
18
19 -url
20
21 -title 标题
22
23 -name URL别名
24
25 -menu 外键 关联菜单表
26
27 -parent 外键 关联自己
28
29 角色表
30
31 -title 标题
32
33 -permissions 多对多 关联权限
34
35 用户表
36
37 -name 用户名
38
39 -pwd 密码
40
41 -roles 多对多 关联角色
42
43 角色和权限的关系表
44
45 用户和角色的关系表
46
47 2.流程
48
49 -中间件
50
51 -白名单
52
53 -settings
54
55 -正则匹配
56
57 -获取权限
58
59 -需要登录不需要校验的URL的校验
60
61 - 路径导航 request.breadcrumb_list=[ { 首页 url } ]
62
63 -权限的校验
64
65 -正则
66
67 -判断pid
68
69 -没有pid 表示当前访问的权限是二级菜单
70
71 记录request.current_menu_id = id
72
73 路径导航
74
75 request.breadcrumb_list.append({ url title })
76
77 -有pid 表示当前访问的权限是二级菜单下的一个子权限
78
79 记录request.current_menu_id = pid
80
81 路径导航
82
83 获取父权限的信息 permission_dict[str(pid)] permission_dict[ pname ]
84
85 request.breadcrumb_list.append({ url title }) # 父权限 二级菜单
86
87 request.breadcrumb_list.append({ url title })
88
89 -匹配成功return
90
91 -return HTTPResponse('没权限')
92
93 -登录成功进行权限信息的初始化
94
95 -获取当前用户的所有权限
96
97 -ORM
98
99 -去除权限为空的
100
101 -跨表 去重
102
103 -构建数据结构
104
105 -权限的字典
106
107 permission_dict = {
108
109 'URL的别名' :{ ‘url’ , ‘title’ , ’id‘ , 'pid' 'pname' }
110
111 }
112
113 -菜单的字典
114
115 menu_dict ={
116
117 '一级菜单的ID':{
118
119 ’title‘
120
121 ’icon‘
122
123 ’weight‘
124
125 ’children‘:[
126
127 {'二级菜单的title' ’url‘ 'id' }
128
129 ] }
130
131 }
132
133 -放入到session中
134
135 -settings配置
136
137 -json序列化 数字当做字典的KEY 会变成字符串
138
139 -模板
140
141 -母版和继承
142
143 -自定义inclusion_tag
144
145 -动态生成二级菜单
146
147 -settings
148
149 -sorted
150
151 -有序字典
152
153 -路径导航
154
155 -settings
156
157 -反射
158
159 -自定义filter
160
161 -权限控制到按钮级别
162
163 namespace:name
164
165 {% if request|has_permission:'namespace:name ' %}
166
167
168
169 {% endif %}
170
171 -URL 反向解析