Gorm2.0+Gin+Casbin+viper开发用户管理后台系统

1,517 阅读2分钟



简体中文 | English

项目指导文档

Online Demo

Font Een

1. 基本介绍

1.1 项目结构

    │  ├─conf               (Config file)
    │  ├─docs  	            (swagger APIs docs)
    │  ├─log                 (log file)
    │  ├─public              (public static file)
            │  ├─static      (head icon)
    ├─src
        │  ├─controller     (Controller)
        │  ├─middleware      (Middleware)
        │  ├─models         (Model entity)
        │  ├─pkg            (Project private package)
            │  ├─adapter    (Casbin adapter)
            │  ├─app        (Gin service response) 
            │  ├─codes      (Response code)
            │  ├─error      (Project private error)
            │  ├─gredis     (Redis)
            │  ├─query      (Songo parase to SQL line)
            │  ├─setting    (Project setting)
        │  ├─router         (Router)
        │  ├─rpc            (RPC)
        │  ├─service        (services)
        │  └─utils	        (common utilities)
    

1.1.2 生成API文档

    cd grom-gin-admin
    go get -u github.com/swaggo/swag/cmd/swag
    swag init

访问http://localhost:8050/api/v1/swagger/index.html,即可查看swagger文档

1.2 环境配置

1.2.1 Golang 安装

1.2.2 项目环境配置

本人在这个项目的环境配置通过docker安装,需要在主机安装配置自己安装PostgreSQL和Redis即可

   git clone https://github.com/olongfen/gorm-gin-admin.git
    cd gorm-gin-admin
    docker-compose up -d .

1.2.3 项目配置说明

  • 通过RSA 密钥对来验证用户会话权限
     admin.key admin.pub
     user.key user.pub
    
  • casbin 模型文件 model_casbin.conf
  • 项目配置文件
   当你的conf目录下还没有配置文件的时候,你可以运行一次项目,会自动生成配置文件,然後修改配置中的自己的配置信息,然後再次運行即可。

1.2.4 Run Service

     go run main.go

2. 技术栈

  • 前端:用基于vueElement-UI构建基础页面。
  • 后端:用Gin快速搭建基础restful风格API,Gin是一个go语言编写的Web框架。
  • 数据库:采用PostgreSQL,使用gorm2.0版本实现对数据库的基本操作,
  • 缓存:准备开发使用Redis实现记录当前活跃用户的jwt令牌并实现多点登录限制。
  • API文档:使用Swagger构建自动化文档。
  • 配置文件:使用github.com/spf13/viper实现yaml格式的配置文件。
  • 日志:使用github.com/sirupsen/logrus实现日志记录。

3. 主要功能

  • 权限管理:基于jwtcasbin实现的权限管理
  • 用户管理:系统管理员分配用户角色和角色权限。
  • 角色管理:创建权限控制的主要对象,可以给角色分配不同api权限和菜单权限。
  • 菜单管理:实现用户动态菜单配置,实现不同角色不同菜单。
  • api管理:不同用户可调用的api接口的权限不同。
  • 条件搜索:增加条件搜索示例。
  • restful示例:可以参考用户管理模块中的示例API。

4. 计划任务

  • 导入,导出Excel
  • 管理员操作记录
  • RPC给其他项目调用
  • token缓存机制