轻量易用的授权基座smart,提供一个RBAC授权模型的基础开箱即用中台管理服务。
支持响应码自定义国际化、高粒度权限分配、接口路由配置和实时生效,同时支持部门数据权限横向访问限制。
本系统的全部接口采用【POST】【application/json】方式传输数据。
除开放接口以外的其他接口均需要通过【ApiKeyAuth:请求头[Token]】完成鉴权。
系统技术栈:Golang、VueNext、MySQL、Redis、Gin、ArcoDesign
Demo地址:http://101.132.76.203/
Demo账密:admin 123456
接口文档提供Swagger[支持调试]和ReDoc[阅读增强]两个版本。
Swagger[支持调试]:http://101.132.76.203/docs/swagger/index.html
ReDoc[阅读增强]:http://101.132.76.203/docs/redoc/index.html
数据库初始化脚本位于:config/smart_init.sql
- golang 1.20
- 工程目录执行
go mod tidy更新依赖 - 配置文件位置
config目录下,配置注释config_comment.js
应用启动需要添加以下环境变量,IDE(如:goLand)可临时添加。
生产部署,可放在启动脚本中,参考restart.sh
如:ENV=test;NODE=APP01
- ENV=test/prod
- NODE=APP01/APP0X
轻度依赖集成,通过静态HTML加载yaml文件进行打开接口文档。
- 首次集成
go install github.com/swaggo/swag/cmd/swag@latest
- 格式化注释代码 (选用)
swag fmt
- 初始化swagger.yaml文件
swag init
- 如果像本工程一样依赖了api.md和独立的api.go文件描述项目(推荐,后续持续使用)
swag init -g api.go --md .
- 删除多余的生成
rm .\docs\docs.go
删除docs.go是因为本项目中并未采用下述依赖来集成。
- github.com/swaggo/swag
- github.com/swaggo/gin-swagger
- github.com/swaggo/files
而是通过HTML模板+JS+YAML引入集成,移除docs.go用于避免依赖编译报错。
源帮助页:https://github.com/swaggo/swag/blob/master/README_zh-CN.md
本地工具以测试类形式归纳在src/zoom包下。
所有测试类的启动目录都是代码所在位置,测试类提供了详细的注释说明。
src/zoom/codeGen/gen_test.go
生成数据库实体类、请求响应实体类、路由入口、响应码常量、控制层、业务层。
src/zoom/respCode/response_code.xlsx
在Excel填写响应内容,其中编号由公式自动计算生成。
src/zoom/respCode/make_test.go
运行测试类自动生成初始化数据库的SQL以及响应码常量文件。
- src/zoom/respCode/response_code.sql
- src/common/constant/response_code.go
src/zoom/i18n/i18n.xlsx
填写国际化,不同模块分不同Sheet,第一个Sheet填写语言,注意后续的国际化Sheet的语言列要完整。
src/zoom/i18n/make_test.go
依照表格生成模块已经对应的前端国际化文件,TypeScript格式。
src/zoom/i18n/i18n.make.exe
编译的Windows执行文件,可以放在前端工程中,位置您可参考本项目的前端项目(大致在:src\locale\i18n.make.exe)。
账号 - 角色(多) - 权限(多) - 接口路由(多)。
权限颗粒度为五层,系统、模块、页面、按钮、路由(路由层已权限关联的形式构成路由集)。
部门数据权限体系,支持多维度的数据权限配置,本级与下级、仅本级、仅个人、全部、指定部门(TODO)、指定人(TODO)。
账号的数据权限可以自由选择,继承部门、本部门、本人、全局。
系统配置入库,支持热配置生效。
默认的系统配置主要包含安全方面,登陆风控、多端登录限制、会话时长等。
未配置的响应码翻译以默认成功和默认失败响应,支持响应码国际化翻译,支持变量注入。
未配置的路由禁止访问,支持热处理,接口加入/移除、授权配置、日志记录、报文入库、脱敏加密等。
