基于Python/Flask实现RBAC的菜单访问权限的核心功能

* 纯属个人学习需要,水平有限,有错误的地方欢迎指出哦~~

基于Python/Flask实现RBAC的菜单访问权限的核心功能

        所有的功能都是基于上面的模型表构建的,目前资源权限控制只做到了菜单url,等到后期有空,希望能精确到具体的字段,把功能做的更加完善.

 

核心功能的实现

  1. RBAC10张数据表(用户表,用户组表,角色表,权限表,菜单表,用户-用户组表,用户-角色表,角色用户组表,角色-权限表,菜单权限表)
  2. jwt实现用户的状态保持
  3. 请求钩子中获取用户的信息,装饰器对身份进行校验
  4. 根据用户的身份,获取对应的角色信息,角色的子角色信息,用户组信息,子用户组信息
  5. 使用请求钩子对url进行校验,当访问不属于自己角色的url时,拒绝访问
  6. 角色的父类角色拥有子类角色的全部权限

Postman测试接口

  1. 登录接口/获取jwt_token /login
  2. 根据登录的用户返回能访问的菜单列表 /show_menus
  3. 管理员查看用户对应的角色列表,组列表 /roles
  4. 只有url访问权限的用户才能访问 /users
  5. 测试sales访问权限 /sales
  6. 测试SalesManager访问权限 /show_menus
  7. 测试Cfo访问权限 /cfo_menu

测试用户

  1. 销售人员 sales
  2. 销售主管 sales_director
  3. 销售总监 sales_manage
  4. 销售部负责人 cfo

菜单资源访问权限逻辑(功能完成)

  1. 上级领导拥有自己的独立的菜单访问资源
  2. 上级领导可以访问下级所有的菜单资源

角色用户组

  1. 用户组用来区分部门,大区,小组
  2. 角色用户组关联的是用户组的负责人角色

其他

  1. 需要在配置文件中配置 hosts
  2. 数据库已经导出,在model文件夹中

 

具体代码可以访问GitHub地址,记得给个赞哦

GitHub地址:https://github.com/Enzozzzz/crm