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 """
############### 权限组件 ################
技术改变命运