gin-admin

module
v0.0.0-...-4e8bfbf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 4, 2020 License: MIT

README

Gin Admin

基于 Gin + GORM + Casbin + Dig 实现的RBAC权限管理脚手架,目的是提供一套轻量的中后台开发框架,方便、快速的完成业务需求的开发。

[![ReportCard][reportcard-image]][reportcard-url] [![GoDoc][godoc-image]][godoc-url] [![License][license-image]][license-url]

  • 在线演示地址 (用户名:root,密码:abc-123)(温馨提醒:为了达到更好的演示效果,这里给出了拥有最高权限的用户,请手下留情,只操作自己新增的数据,不要动平台本身的数据!谢谢!
  • Swagger 文档地址

特性

  • 遵循 RESTful API 设计规范
  • 基于 GIN WEB 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、请求频率限制、追踪 ID 等)
  • 基于 Casbin 的 RBAC 访问控制模型
  • 基于 GORM 的数据库存储(存储层对外采用接口的方式供业务层调用,实现了存储层的完全隔离)
  • 依赖注入(基于dig)
  • 日志追踪(基于logrus,日志钩子支持 gorm)
  • JWT 认证(基于黑名单的认证模式,存储支持:file/redis)
  • 支持 Swagger 文档(基于swaggo)
  • 单元测试(基于net/http/httptest包,覆盖所有接口层的测试)

快速开始

使用gin-admin-cli工具

快速创建项目

$ go get -v github.com/fdgo/gin-admin-cli
$ gin-admin-cli new -m -d ~/go/src/gin-admin -p gin-admin

使用 air 工具启动服务(推荐)

可自动监听文件变化

$ go get -v github.com/cosmtrek/air/cmd/air
$ cd ~/go/src/gin-admin
$ air

使用 run 命令运行服务

$ cd ~/go/src/gin-admin
$ go run cmd/server/main.go -c ./configs/config.toml -m ./configs/model.conf -swagger ./docs/swagger -menu ./configs/menu.json

启动成功之后,可在浏览器中输入地址访问:http://127.0.0.1:10088/swagger/

解放劳动力 - 快速生成功能模块(以Task为例,具体可参考:gin-admin-cli)

$ gin-admin-cli g -d ~/go/src/gin-admin -p gin-admin -n Task -c '任务管理'

手动下载并运行

获取代码

$ go get -v github.com/fdgo/gin-admin/cmd/server

运行

运行服务

也可以使用脚本运行(详情可查看Makefile):make start

$ cd github.com/fdgo/gin-admin
$ go run cmd/server/main.go -c ./configs/config.toml -m ./configs/model.conf -swagger ./docs/swagger -menu ./configs/menu.json

启动成功之后,可在浏览器中输入地址访问:http://127.0.0.1:10088/swagger/

温馨提醒
  1. 默认配置采用的是 sqlite 数据库,数据库文件(自动生成)在data/gadmin.db。如果想切换为mysqlpostgres,请更改配置文件,并创建数据库(数据库创建脚本在script目录下)。
  2. 日志的默认配置为标准输出,如果想切换到写入文件或写入到 gorm 存储,可以自行切换配置。

前端实现

Swagger 文档的使用

文档规则请参考:https://github.com/swaggo/swag#declarative-comments-format

安装工具并生成文档

$ go get -u -v github.com/swaggo/swag/cmd/swag
$ swag init -g ./internal/app/routers/swagger.go -o ./docs/swagger

生成文档之后,可在浏览器中输入地址访问:http://127.0.0.1:10088/swagger/

项目结构概览

.
├── cmd
│   └── server:主服务(程序入口)
├── configs:配置文件目录(包含运行配置参数及casbin模型配置)
├── docs:文档目录
│   └── swagger:swagger静态文件目录
├── internal:内部应用
│   └── app:主应用目录
│       ├── bll:业务逻辑层接口
│       │   └── impl:业务逻辑层的接口实现
│       ├── config:配置参数(与配置文件一一映射)
│       ├── context:统一上下文
│       ├── errors:统一的错误处理
│       ├── ginplus:gin的扩展函数库
│       ├── middleware:gin中间件
│       ├── model:存储层接口
│       │   └── impl:存储层接口实现
│       │       └── gorm:基于gorm的存储层实现
│       ├── routers:路由层
│       │   └── api:/api路由模块
│       │       └── ctl:/api路由模块对应的控制器层
│       ├── schema:对象模型
│       └── test:针对接口的单元测试
├── pkg:公共模块
│   ├── auth:认证模块
│   │   └── jwtauth:JWT认证模块实现
│   ├── logger:日志模块
│   └── util:工具库
└── scripts:执行脚本

感谢以下框架的开源支持

MIT License

Copyright (c) 2019 Lyric

Directories

Path Synopsis
Package captcha implements generation and verification of image and audio CAPTCHAs.
Package captcha implements generation and verification of image and audio CAPTCHAs.
capexample
example of HTTP server that uses the captcha package.
example of HTTP server that uses the captcha package.
capgen
capgen is an utility to test captcha generation.
capgen is an utility to test captcha generation.
capgensounds
generate is a tool to generate sounds.go from WAVE files.
generate is a tool to generate sounds.go from WAVE files.
cmd
docs
internal
app
app/routers
Package routers 生成swagger文档 文档规则请参考:https://github.com/swaggo/swag#declarative-comments-format 使用方式: go get -u github.com/swaggo/swag/cmd/swag swag init -g ./internal/app/routers/swagger.go -o ./docs/swagger
Package routers 生成swagger文档 文档规则请参考:https://github.com/swaggo/swag#declarative-comments-format 使用方式: go get -u github.com/swaggo/swag/cmd/swag swag init -g ./internal/app/routers/swagger.go -o ./docs/swagger
app/test
Package test 接口测试 使用方式: go test -v
Package test 接口测试 使用方式: go test -v
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL