基于Python/Flask实现RBAC的菜单访问权限的核心功能
* 纯属个人学习需要,水平有限,有错误的地方欢迎指出哦~~
所有的功能都是基于上面的模型表构建的,目前资源权限控制只做到了菜单url,等到后期有空,希望能精确到具体的字段,把功能做的更加完善.
核心功能的实现
- RBAC10张数据表(用户表,用户组表,角色表,权限表,菜单表,用户-用户组表,用户-角色表,角色用户组表,角色-权限表,菜单权限表)
- jwt实现用户的状态保持
- 请求钩子中获取用户的信息,装饰器对身份进行校验
- 根据用户的身份,获取对应的角色信息,角色的子角色信息,用户组信息,子用户组信息
- 使用请求钩子对url进行校验,当访问不属于自己角色的url时,拒绝访问
- 角色的父类角色拥有子类角色的全部权限
Postman测试接口
- 登录接口/获取jwt_token /login
- 根据登录的用户返回能访问的菜单列表 /show_menus
- 管理员查看用户对应的角色列表,组列表 /roles
- 只有url访问权限的用户才能访问 /users
- 测试sales访问权限 /sales
- 测试SalesManager访问权限 /show_menus
- 测试Cfo访问权限 /cfo_menu
测试用户
- 销售人员 sales
- 销售主管 sales_director
- 销售总监 sales_manage
- 销售部负责人 cfo
菜单资源访问权限逻辑(功能完成)
- 上级领导拥有自己的独立的菜单访问资源
- 上级领导可以访问下级所有的菜单资源
角色用户组
- 用户组用来区分部门,大区,小组
- 角色用户组关联的是用户组的负责人角色
其他
- 需要在配置文件中配置 hosts
- 数据库已经导出,在model文件夹中
具体代码可以访问GitHub地址,记得给个赞哦
GitHub地址:https://github.com/Enzozzzz/crm