django基础知识~ RBAC权限周边初探

一 基本定义 权限核心定义RBAC( Role based access control)
二 权限设计流程
   1 创建基本权限流程表
   2 录入流程表相关数据
   3 编写中间件进行流程验证
   4 完成流程
三 权限相关表细节
   1 权限表的设计三张表(用户表,角色表,相关权限表)
   2 用户表本身存储用户密码,角色表存储组名称,权限表存储具体的url访问路径
   3 用户表和角色表是多对多关系,也即是一个用户可能属于多个组,一个组可能拥有多个权限
四 权限细节补充
   1 一个完整的url应该包含正则表达式,这点要牢记.常见于编辑和删除场景.录入的url要记得完全匹配访问url
   2 多对多的字段名为关联model小写即可比如 roles=models.ManyToManyField(to="Role")
   3 多对多对孩子类的查询推荐使用反向查询,类似 父母__key
五 录入数据
   采用admin录入能加快速度
六 中间件
  1 基础:我们要知道,任何访问都要经过中间件的处理.配置项在setting
  2 基本定义
    继承类 from django.utils.deprecation import MiddlewareMixin
    预定义方法名->需要重写
    process_request(self,request)
    process_response(self, request, response)
    以上方法的返回值可以是None或一个HttpResponse对象,如果是None,则继续按照django定义的规则向后继续执行,如果是HttpResponse对象,则直接将该对象返回给用户。
  3 自定义中间件定义类重写上述方法即可
七 基本权限中间件流程
    1 白名单验证机制->在setting中进行配置匹配
    2 查询当前登录状态->检测用户ID
    3 查询访问路径是否在权限列表中
    4 判断完成
 八 流程设计补充
   1 流程顺序不能改变,可以采用re.search()进行匹配判断,因为url会包含正则
 九 登录后的session处理
   1 session存档用户ID
   2 session存到用户权限列表
   这两项中间件都需要进行验证用到
十 session基础知识补充
   1 django_session表
      session_key key
      session_data value 这里存取的是我们自定义和已存在的相关数据,属于字典类型.例如下面的字典键值
      session_date 过期时间
   2 session本身是字典,django最常见的就是查询和赋值
   3 django会默认为session使用json序列化。json序列化只能序列化一些基本数据类型,如数字,字符串,列表等
十一 总结

   1 三部分 view 中间件  前端  

   2 三流程  读取权限和菜单 设置白名单  进行权限和对应菜单检查

转载于:https://www.cnblogs.com/danhuangpai/p/11017364.html

猜你喜欢

转载自blog.csdn.net/weixin_33912453/article/details/93262966