All Projects → piupuer → Gin Web

piupuer / Gin Web

Licence: mit
由gin + gorm + jwt + casbin组合实现的RBAC权限管理脚手架Golang版, 搭建完成即可快速、高效投入业务开发

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gin Web

Go Admin
go web api,包含gin+gorm+jwt+rbac等。
Stars: ✭ 298 (+178.5%)
Mutual labels:  gin, jwt, rbac, casbin
Go-Gin-Api
基于golang开源框架 gin封装的api框架
Stars: ✭ 42 (-60.75%)
Mutual labels:  viper, gin, rbac, casbin
Go Admin
基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;文档:https://doc.go-admin.dev Demo: https://www.go-admin.dev Antd beta版本:https://preview.go-admin.dev
Stars: ✭ 5,439 (+4983.18%)
Mutual labels:  gin, casbin, jwt
Negroni Authz
negroni-authz is an authorization middleware for Negroni
Stars: ✭ 152 (+42.06%)
Mutual labels:  middleware, rbac, casbin
Caddy Authz
Caddy-authz is a middleware for Caddy that blocks or allows requests based on access control policies.
Stars: ✭ 221 (+106.54%)
Mutual labels:  middleware, rbac, casbin
Think Casbin
专为ThinkPHP定制的Casbin的扩展包,Casbin是一个功能强大,高效的开源访问控制库。
Stars: ✭ 138 (+28.97%)
Mutual labels:  restful, rbac, casbin
Golang Gin Realworld Example App
Exemplary real world application built with Golang + Gin
Stars: ✭ 1,780 (+1563.55%)
Mutual labels:  restful, gin, jwt
Dokit
基于 Spring Boot2、 Jpa、 Spring Security、JWT、redis、Vue的前后端分离的后台管理系统开发平台, 用户管理、菜单管理、角色管理、字典管理、权限控制的方式为RBAC,操作日志、异常日志、接口限流、项目支持数据权限管理,支持一键生成前后端代码(支持在线预览及打包下载),支持前端菜单动态路由 可一键部署服务器应用,数据库。系统中活跃用户状态监控,监视当前系统CPU、内存、磁盘、堆栈等相关信息,基于Element UI在线表单设计及生成Vue代码。
Stars: ✭ 348 (+225.23%)
Mutual labels:  websocket, jwt, rbac
Snake
🐍 一款小巧的基于Go构建的开发框架,可以快速构建API服务或者Web网站进行业务开发,遵循SOLID设计原则
Stars: ✭ 615 (+474.77%)
Mutual labels:  restful, gin, jwt
Restbed
Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 applications.
Stars: ✭ 1,551 (+1349.53%)
Mutual labels:  restful, websocket
Duckygo
一个同时支持Session以及JWT的高性能高可用 Golang Restful API 脚手架 !
Stars: ✭ 57 (-46.73%)
Mutual labels:  gin, jwt
Caddy Jwt
JWT middleware for the Caddy server
Stars: ✭ 107 (+0%)
Mutual labels:  middleware, jwt
Gin Glog
Gin middleware to use glog
Stars: ✭ 53 (-50.47%)
Mutual labels:  middleware, gin
Django Channels React Multiplayer
turn based strategy game using django channels, redux, and react hooks
Stars: ✭ 52 (-51.4%)
Mutual labels:  middleware, websocket
Http Proxy Middleware
⚡ The one-liner node.js http-proxy middleware for connect, express and browser-sync
Stars: ✭ 8,730 (+8058.88%)
Mutual labels:  middleware, websocket
Egg Authz
egg-authz is an authorization middleware for Egg.js based on Casbin
Stars: ✭ 50 (-53.27%)
Mutual labels:  middleware, casbin
Casbin
An authorization library that supports access control models like ACL, RBAC, ABAC in Golang
Stars: ✭ 10,872 (+10060.75%)
Mutual labels:  rbac, casbin
Jwt To Rbac
JWT-to-RBAC lets you automatically generate RBAC resources based on JWT tokens
Stars: ✭ 89 (-16.82%)
Mutual labels:  jwt, rbac
Dashboard Server
A JSON file RESTful API with authorization based on json-server
Stars: ✭ 48 (-55.14%)
Mutual labels:  restful, jwt
Tigo
Tigo is an HTTP web framework written in Go (Golang).It features a Tornado-like API with better performance. Tigo是一款用Go语言开发的web应用框架,API特性类似于Tornado并且拥有比Tornado更好的性能。
Stars: ✭ 1,130 (+956.07%)
Mutual labels:  restful, middleware

Gin Web

由gin + gorm + jwt + casbin组合实现的RBAC权限管理脚手架Golang版, 搭建完成即可快速、高效投入业务开发

Go version Gin version Gorm version License

特性

  • RESTful API 设计规范
  • Gin 一款高效的golang web框架
  • MySQL 数据库存储
  • Jwt 用户认证, 登入登出一键搞定
  • Casbin 基于角色的访问控制模型(RBAC)
  • Gorm 数据库ORM管理框架, 可自行扩展多种数据库类型(主分支已支持gorm 2.0)
  • Validator 请求参数校验, 版本V9
  • Lumberjack 日志切割工具, 高效分离大日志文件, 按日期保存文件
  • Viper 配置管理工具, 支持多种配置文件类型
  • Packr 文件打包工具, 轻松将静态文件打包到编译后的二进制应用中
  • GoFunk 常用工具包, 某些方法无需重复造轮子
  • Workflow 工作流程管理(由于golang工作流相关轮子很少不太符合项目需要, 因此自己写了一个)
  • Uploader 大文件分块上传/多文件、文件夹上传Vue组件vue-uploader
  • MessageCenter 消息中心(websocket长连接保证实时性, 活跃用户上线时新增消息表, 不活跃用户不管, 有效降低数据量)
  • testing 测试标准包, 快速进行单元测试
  • Grafana Loki 轻量日志收集工具loki, 支持分布式日志收集(需要通过docker运行gin-web-docker)
  • Minio 轻量对象存储服务(需要通过docker运行gin-web-docker)

中间件

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

默认菜单

  • 首页
  • 系统管理
    • 菜单管理
    • 角色管理
    • 用户管理
    • 接口管理
    • 工作流管理
    • 操作日志
    • 消息推送
  • 测试页面
    • 测试用例
    • 我的请假条
    • 待审批列表
  • 上传组件
    • 上传示例1
    • 上传示例2(主要是针对ZIP压缩包上传及解压)

在线演示(前端静态文件已上传至阿里云OSS, 访问速度飞起)

传送门
日志收集器Grafana传送门 (test/123456)
Minio对象存储 (minio/minio123)

快速开始

git clone https://github.com/piupuer/gin-web
cd gin-web
# 强烈建议使用golang官方包管理工具go mod, 无需将代码拷贝到$GOPATH/src目录下
# 确保go环境变量都配置好, 运行main文件
go run main.go

启动成功之后, 可在浏览器中输入: http://127.0.0.1:10000/api/ping, 若不能访问请检查Go环境变量或数据库配置是否正确

项目结构概览

├── api
│   └── v1 # v1版本接口目录(类似于Java中的controller), 如果有新版本可以继续添加v2/v3
├── conf # 配置文件目录(包含测试/预发布/生产环境配置参数及casbin模型配置)
├── docker-conf # docker相关配置文件
├── initialize # 数据初始化目录
├── logs # 日志文件默认目录(运行代码是生成)
├── middleware # 中间件目录
├── models # 存储层模型定义目录
├── pkg # 公共模块目录
│   ├── cache_service # redis缓存服务目录
│   ├── global # 全局变量目录
│   ├── redis # redis查询工具目录
│   ├── request # 请求相关结构体目录
│   ├── request # 响应相关结构体目录
│   ├── service # 数据DAO服务目录
│   ├── utils # 工具包目录
│   └── wechat # 微信接口目录
├── router # 路由目录
├── tests # 本地单元测试配置目录
├── upload # 上传文件默认目录
├── Dockerfile # docker镜像构建文件(生产环境)
├── Dockerfile.stage # docker镜像构建文件(预发布环境)
├── go.mod # go依赖列表
├── go.sum # go依赖下载历史
├── main.go # 程序主入口
├── README.md # 说明文档
├── TIPS.md # 个人踩坑记录
├── TODO.md # 已完成/待完成列表

前端

  • 项目地址: gin-web-vue
  • 实现方式: Typescript(为什么使用它, JS的弱类型带来的问题实在不想再吐槽, TS提高效率, 反正笔者作为一枚后端用起来很舒服~)

注意事项

TODO

特别感谢

前端:
Element UI: A Vue.js 2.0 UI Toolkit for Web.
vue-element-admin: a production-ready front-end solution for admin interfaces.
vue-typescript-admin-template: a production-ready front-end solution for admin interfaces based on vue, typescript and UI Toolkit element-ui.

后端:
Gin: a web framework written in Go (Golang).
gin-jwt: a middleware for Gin framework.
casbin: An authorization library that supports access control models like ACL, RBAC, ABAC in Golang.
Gorm: The fantastic ORM library for Golang.
zap: Blazing fast, structured, leveled logging in Go.
lumberjack: lumberjack is a log rolling package for Go.
viper: Go configuration with fangs.
packr: The simple and easy way to embed static files into Go binaries.
go-funk: A modern Go utility library which provides helpers (map, find, contains, filter, ...).
limiter: Dead simple rate limit middleware for Go.
validator: Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.

日志搜集:
loki: Loki: like Prometheus, but for logs.


下面几个类似本项目, 学习了大神的一些代码风格:
gin-admin: RBAC scaffolding based on Gin + Gorm/Mongo + Casbin + Wire.
gin-vue-admin: Gin-vue-admin is a full-stack (frontend and backend separation) framework designed for management system.
go-admin: Gin + Vue + Element UI based scaffolding for front and back separation management system.

互动交流

与作者对话

该项目是利用业余时间进行开发的, 开发思路参考了很多优秀的前后端框架, 结合自己的理解和实际需求, 做了改进. 如果觉得项目有不懂的地方或需要改进的地方, 欢迎提issue或pr!

QQ群:943724601

QQ群

就不贴打赏二维码了, 不然显得项目很low, 如果您非要请我喝咖啡, 私信我, 哈哈哈~

MIT License

Copyright (c) 2020 piupuer
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].