权限控制

  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 反向解析

 

posted @ 2018-12-27 15:01  Niuli'blog  阅读(342)  评论(0编辑  收藏  举报