zoukankan      html  css  js  c++  java
  • crm项目权限组件

    ###############    表结构分析     ################

    """
    表结构设计:
    1,四张表
    用户表,userinfo,这个表本身不会被创建,而是用来被真正的用户表做继承,
    角色表,role,
    菜单表,menu,
    权限表,permission,

    2,关联关系 用户表和角色表多对多关联, 角色表和权限表多对多关联, 权限表和菜单表一对多关联,
    """

    ###############    提供的操作     ################ 

    """
    
    提供的操作
    1,角色添加,只是菜单添加,
    
    
    2,菜单添加,
    添加一级菜单,这是在菜单表中保存的
    添加二级菜单,如果权限表关联了菜单表,就是菜单,没有关联就不是菜单,
    添加菜单权限,对于非二级菜单的需要关联是二级菜单的id,用来展开权限,这个设计可以把权限控制到按钮级别,
    这种是在建立菜单和权限的关系,
    
    
    3,分配权限,可以为客户分配角色,为角色分配权限,
    这种其实就是建立员工和角色,角色和菜单之间的关联关系,都是多对多的,
    这个分配的角色就是角色页面建立的,
    这个分配权限就是菜单页面创建的,
    另外用户可以绑定角色,
    
    
    """

      

    ###############    权限初始化     ################

    """
    
    权限初始化
    1,在登陆的时候,把菜单和权限拿出来,然后放入session里面去,
    
    2,这一步涉及到了django session的操作,
    原理就是客户端保存cookie  格式是  sessionid :sessionkey
    sessionkey是自动生成的
    sessionkkey会保持在服务器端,然后对应的有sessiondata,
    这种数据在服务端,会比较安全,
    
    """

      

    ###############    权限组件     ################

    """
    
    权限校验
    1,使用中间件来校验权限,这样每一个进来的url都会经过中间件
    
    2,逻辑就是获取当前访问的url,然后取出初始化中保存到session中的url,看看是否匹配到,匹配到就是有权限的,
    
    3,settings.VALID_URL_LIST,
    白名单中的URL无需权限验证即可访问
    
    4,settings.NO_PERMISSION_LIST
    需要登录,但无需权限校验,
    
    """

    ###############    权限组件     ################

    """
    权限初始化
    
    在登陆的时候做权限初始化,这个权限初始化做了什么?
    需要传递两个参数,user和request,user是当前用户,request是请求相关的所有信息
    user是一个对象,user = models.UserInfo.objects.filter(name=user, password=pwd).first()
    做了两个事情: 1,根据这个用户获取到他所有的权限,并且放入session,settings.PERMISSION_SESSION_KEY 2,把菜单和权限,放入session,settings.MENU_SESSION_KEY
    """

    ###############    权限组件     ################

     

  • 相关阅读:
    保研练习题(5)
    保研练习题(4)
    保研练习题(3)
    保研练习题(2)
    保研练习题(1)
    基于邻接矩阵的拓扑排序--升级版
    基于邻接矩阵的拓扑排序
    vue 父组件调用子组件的函数
    vue 子组件调用父组件的函数
    JS 打乱数组顺序
  • 原文地址:https://www.cnblogs.com/andy0816/p/12157023.html
Copyright © 2011-2022 走看看