由gin+gorm+jwt+casbin组合实现的RBAC权限管理脚手架-《GO开发知识笔记》

admin 2025-11-04 00:58:37 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 特性
  • 中间件
  • 默认菜单

    特性

    • RESTful API 设计规范
    • Gin 一款高效的golang web框架
    • MySQL 数据库存储
    • Jwt 用户认证, 登入登出一键搞定
    • Casbin 基于角色的访问控制模型(RBAC)
    • Gorm 数据库ORM管理框架, 可自行扩展多种数据库类型(主分支已支持gorm 2.0)
    • Validator 请求参数校验, 版本V9
    • Log v1.2.2升级后日志支持两种常见的高性能日志 logrus / zap (移除日志写入本地文件, 强烈建议使用docker日志或其他日志收集工具)
    • Viper 配置管理工具, 支持多种配置文件类型
    • Embed go 1.16文件嵌入属性, 轻松将静态文件打包到编译后的二进制应用中
    • DCron 分布式定时任务,同一task只在某台机器上执行一次(需要配置redis)
    • GoFunk 常用工具包, 某些方法无需重复造轮子
    • FiniteStateMachine 有限状态机, 常用于审批流程管理(没有使用工作流, 一是go的轮子太少, 二是有限状态机基本可以涵盖常用的审批流程)
    • Uploader 大文件分块上传/多文件、文件夹上传Vue组件vue-uploader
    • MessageCenter 消息中心(websocket长连接保证实时性, 活跃用户上线时新增消息表, 不活跃用户不管, 有效降低数据量)
    • testing 测试标准包, 快速进行单元测试
    • Grafana Loki 轻量日志收集工具loki, 支持分布式日志收集(需要通过docker运行gin-web-docker)
    • Minio 轻量对象存储服务(需要通过docker运行gin-web-docker)
    • Swagger Swagger V2接口文档
    • Captcha 密码输错次数过多需输入验证码
    • Sign API接口签名(防重放攻击、防数据篡改)
    • Opentelemetry 链路追踪, 快速分析接口耗时

      中间件

    • Rate 访问速率限制中间件 — 限制访问流量

    • Exception 全局异常处理中间件 — 使用golang recover特性, 捕获所有异常, 保存到日志, 方便追溯
    • Transaction 全局事务处理中间件 — 每次请求无异常自动提交, 有异常自动回滚事务, 无需每个service单独调用(GET/OPTIONS跳过)
    • AccessLog 请求日志中间件 — 每次请求的路由、IP自动写入日志
    • Cors 跨域中间件 — 所有请求均可跨域访问
    • Jwt 权限认证中间件 — 处理登录、登出、无状态token校验
    • Casbin 权限访问中间件 — 基于Cabin RBAC, 对不同角色访问不同API进行校验
    • Idempotence 接口幂等性中间件 — 保证接口不受网络波动影响而重复点击或提交(目前针对create接口加了处理,可根据实际情况更改)

      默认菜单

    • 首页

    • 系统管理
      • 菜单管理
      • 角色管理
      • 用户管理
      • 接口管理
      • 数据字典
      • 操作日志
      • 消息推送
      • 机器管理
    • 状态机
      • 状态机配置
      • 我的请假条
      • 待审批列表
    • 上传组件
      • 上传示例1
      • 上传示例2(主要是针对ZIP压缩包上传及解压)
    • 测试页面
      • 测试用例
    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  14