项目作者: hequan2017

项目描述 :
基本gf的 go web 管理框架
高级语言: Go
项目地址: git://github.com/hequan2017/go-web-admin.git
创建时间: 2020-01-08T08:08:08Z
项目社区:https://github.com/hequan2017/go-web-admin

开源协议:MIT License

关键词:
gf gin go goframe

下载


go-web-admin

版本
语言
base

基于 goframe 框架,完成 go web后端 基本组件开发

目录

  1. - app 业务逻辑层 所有的业务逻辑存放目录。
  2. - api 业务接口 接收/解析用户输入参数的入口/接口层。
  3. - model 数据模型 数据管理层,仅用于操作管理数据,如数据库操作。
  4. - service 逻辑封装 业务逻辑封装层,实现特定的业务需求,可供不同的包调用。
  5. - boot 初始化包 用于项目初始化参数设置。
  6. - config 配置管理 所有的配置文件存放目录。
  7. - docfile 项目文档 DOC项目文档,如: 设计文档、脚本文件等等。
  8. - library 公共库包 公共的功能封装包,往往不包含业务需求实现。
  9. - log 日志
  10. - public 静态目录 仅有该目录下的文件才能对外提供静态服务访问。(本项目没用到)
  11. - router 路由注册 用于路由统一的注册管理。
  12. - template 模板文件 MVC模板文件存放的目录。(本项目没用到)
  13. - test 单元测试
  14. - go.mod 依赖管理 使用Go Module包管理的依赖描述文件。
  15. - main.go 入口文件 程序入口文件。

实现功能

  • 登录
  • jwt验证
  • 权限验证
  • 用户user 增删改查
  • 权限组role 增删改查
  • 菜单menu 增删改查

权限验证说明

利用的casbin库, 将 user role menu 进行自动关联

  1. 项目启动时,会自动加载权限. 如有更改,会删除对应的权限,重新加载.
  2. 用户关联角色
  3. 角色关联菜单
  4. 权限关系为:
  5. 角色(role.name,menu.path,menu.method)
  6. 用户(user.username,role.name)
  7. 例如:
  8. test /api/v1/users GET
  9. hequan test
  10. hequan GET /api/v1/users 地址的时候,会去检查权限,因为他属于test组,同时组有对应权限,所以本次请求会通过。
  11. 用户 admin 有所有的权限,不进行权限匹配
  12. 登录接口 /token 不进行验证

请求

请求和接收 都是 传递 json 格式 数据
```
例如:
访问 /token 获取token
{
“username”: “admin”,
“password”: “123456”
}

访问 http://127.0.0.1:8000/api/v1/users?page=1

请求头设置 Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  1. ## 运行
  2. * 部署mysql,创建库 go-web-admin
  3. * 导入docfile/sql/go-web-admin.sql
  4. * 修改配置文件 config/config.toml
  5. ```bash
  6. go run main.go
  7. 2020-01-09 11:15:45.119 [INFO] 更新角色权限关系 [["hequan","运维部"]]
  8. 2020-01-09 11:15:45.208 [INFO] 角色权限关系 [["hequan","运维部"]]
  9. SERVER | DOMAIN | ADDRESS | METHOD | ROUTE | HANDLER | MIDDLEWARE
  10. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  11. default | default | :8000 | ALL | /* | go-web-admin/library/jwt.JWT | GLOBAL MIDDLEWARE
  12. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  13. default | default | :8000 | ALL | /* | go-web-admin/library/permission.CasbinMiddleware | GLOBAL MIDDLEWARE
  14. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  15. default | default | :8000 | ALL | /* | go-web-admin/router.MiddlewareCORS | GLOBAL MIDDLEWARE
  16. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  17. default | default | :8000 | DELETE | /api/v1/menus/*id | go-web-admin/app/api/a_menu.(*Controller).Delete |
  18. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  19. default | default | :8000 | GET | /api/v1/menus/*id | go-web-admin/app/api/a_menu.(*Controller).Get |
  20. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  21. default | default | :8000 | POST | /api/v1/menus/*id | go-web-admin/app/api/a_menu.(*Controller).Post |
  22. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  23. default | default | :8000 | PUT | /api/v1/menus/*id | go-web-admin/app/api/a_menu.(*Controller).Put |
  24. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  25. default | default | :8000 | DELETE | /api/v1/roles/*id | go-web-admin/app/api/a_role.(*Controller).Delete |
  26. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  27. default | default | :8000 | GET | /api/v1/roles/*id | go-web-admin/app/api/a_role.(*Controller).Get |
  28. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  29. default | default | :8000 | POST | /api/v1/roles/*id | go-web-admin/app/api/a_role.(*Controller).Post |
  30. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  31. default | default | :8000 | PUT | /api/v1/roles/*id | go-web-admin/app/api/a_role.(*Controller).Put |
  32. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  33. default | default | :8000 | DELETE | /api/v1/users/*id | go-web-admin/app/api/a_user.(*Controller).Delete |
  34. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  35. default | default | :8000 | GET | /api/v1/users/*id | go-web-admin/app/api/a_user.(*Controller).Get |
  36. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  37. default | default | :8000 | POST | /api/v1/users/*id | go-web-admin/app/api/a_user.(*Controller).Post |
  38. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  39. default | default | :8000 | PUT | /api/v1/users/*id | go-web-admin/app/api/a_user.(*Controller).Put |
  40. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  41. default | default | :8000 | ALL | /token | go-web-admin/app/api/a_user.Login |
  42. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  43. default | default | :8000 | ALL | /userInfo | go-web-admin/app/api/a_user.UserInfo |
  44. |---------|---------|---------|--------|-------------------|--------------------------------------------------|-------------------|
  45. 默认账户密码 admin 123456

所用组件

  • goframe
  • gorm
  • casbin
  • jwt-go
  • mysql
  • sha1

注释

  1. 200:请求成功
  2. 201:创建、修改成功
  3. 204:删除成功
  4. 400:参数错误
  5. 401:未登录
  6. 403:禁止访问
  7. 404:未找到
  8. 500:系统错误

作者

  • 何全