# 程式碼學習 drf ### drf_admin 程式碼 https://github.com/TianPangJi/drf_admin 介紹文檔:https://blog.csdn.net/Mr_w_ang/article/details/111303774 系统功能 * JWT鉴权 * RBAC权限验证 * Swagger接口文档 * WebSocket * 后台日志log * 系统管理 * 用户管理 * 角色管理 * 权限管理 * 部门管理 * 任务调度(Cron任务) * 系统监控 * 在线用户 * IP黑名单 * crud日志 * 错误日志 * 服务监控 * 主要应用技术 * Django * Django Rest Framework * APScheduler * drf-yasg * channels * redis 应用技术 * Django * Django Rest Framework * APScheduler * drf-yasg * channels * redis ### 实现过程 #### 流程图 ![](https://i.imgur.com/mCdenyf.png) 说明 * 前端请求登录,成功后端返回Token值,否则后端返回400 * 前端请求获取当前用户信息,成功后根据当前用户信息中的权限信息,进行判断路由及按钮权限判断 * 前端请求其他接口,后端先验证登录状态(失败则返回401),再验证用户权限(失败则返回403) * 通过验证后请求进入Django视图 #### 权限流程图 ![](https://i.imgur.com/sWuWvcR.png) 说明 * 根据需求,创建不同角色,例如:admin、visitor * 依据角色,给不同的**角色**分配不同的权限 * 根据用户的岗位及职责分配角色,使不同**用户**具有不同的权限 * 用户请求后端接口时,验证用户权限,通过则放行,否则返回403 * 操作数据库 #### 数据库表设计 Users用户表 Roles角色表 Permissions权限表 Users-Roles(用户角色关联表) Roles-Permissions(角色权限关联表) ![](https://i.imgur.com/cuxHOau.png) ### django-vue-admin 程式碼 基于RBAC模型权限控制的中小型应用的基础开发平台,前后端分离,后端采用django+django-rest-framework,前端采用vue+ElementUI,移动端采用uniapp+uView(可发布h5和小程序). 學習筆記:https://hackmd.io/BmvaBJ0SRF-FKn6VRu5Sow https://github.com/caoqianming/django-vue-admin 文章(要付費) https://python.plainenglish.io/role-based-authentication-and-authorization-with-djangorestframework-and-simplejwt-d9614d79995c 相關套件: https://pypi.org/project/rest-framework-roles/ 相關教學影片: https://www.youtube.com/watch?v=soxd_xdHR0o&list=PLOLrQ9Pn6caw0PjVwymNc64NkUNbZlhFw&ab_channel=VeryAcademy