权限控制
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 反向解析