V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
zwj777
V2EX  ›  Go 编程语言

基于 Gin + Vue + Element UI 的前后端分离权限管理系统

  •  1
     
  •   zwj777 ·
    wenjianzhang · 2020-03-14 20:27:16 +08:00 · 7142 次点击
    这是一个创建于 1710 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go-admin

    基于 Gin + Vue + Element UI 的前后端分离权限管理系统

    项目地址:

    Githubhttps://github.com/wenjianzhang/go-admin

    码云https://gitee.com/mydearzwj/go-admin

    同步更新

    ✨ 特性

    • 遵循 RESTful API 设计规范

    • 基于 GIN WEB API 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、追踪 ID 等)

    • 基于 Casbin 的 RBAC 访问控制模型

    • JWT 认证

    • 支持 Swagger 文档(基于 swaggo)

    • 基于 GORM 的数据库存储,可扩展多种类型数据库

    • 配置文件简单的模型映射,快速能够得到想要的配置

    • TODO: 单元测试

    🎁 内置

    1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
    2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
    3. 岗位管理:配置系统用户所属担任职务。
    4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
    5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
    6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
    7. 参数管理:对系统动态配置常用参数。
    8. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
    9. 登录日志:系统登录日志记录查询包含登录异常。
    10. 系统接口:根据业务代码自动生成相关的 api 接口文档。

    🔗 在线体验

    admin / 123456

    演示地址:http://www.zhangwj.com

    📦 本地开发

    step 1:

    git clone https://e.coding.net/wenjianzhang/go-admin.git
    

    step 2:

    cd ./goadmin/src/goadmin
    

    step 3:

    go build
    

    step 4:

    vi ./config/setting.yml (更改 isinit 和数据库连接)
    

    step 5:

    ./goadmin
    

    文档生成

    swag init  
    

    如果没有 swag 命令 go get 安装一下即可

    go get -u github.com/swaggo/swag/cmd/swag
    

    交叉编译

    env GOOS=windows GOARCH=amd64 go build main.go
    

    or

    env GOOS=linux GOARCH=amd64 go build main.go
    

    qq 技术交流群: 74520518

    第 1 条附言  ·  2020-03-15 10:48:49 +08:00
    第 2 条附言  ·  2020-03-23 12:50:07 +08:00

    初始化(极其简单了😂)

    使用过程中一定要看一下这一条啊!不要再问没有数据库初始化脚本了...

    👀操作简单描述:

    1. 找到配置文件
    2. 修改数据库连接
    3. 启动..........(会自动初始化数据库信息以及必须的基础数据)
    第 3 条附言  ·  2020-04-02 17:00:20 +08:00

    新版本发布

    代码生成工具已经上线,喜欢的朋友请star一下

    谢谢各位的支持!

    29 条回复    2020-03-23 14:18:25 +08:00
    manami
        1
    manami  
       2020-03-14 20:44:37 +08:00
    看起来不错,赞
    sunwei0325
        2
    sunwei0325  
       2020-03-14 21:05:10 +08:00
    先 star 一个慢慢看
    seraphv3
        3
    seraphv3  
       2020-03-14 21:05:20 +08:00
    楼主是不是还有一个 java 的叫做若依?我们公司都用来做了一个项目了
    zwj777
        4
    zwj777  
    OP
       2020-03-14 21:13:43 +08:00
    @seraphv3 我参考了这个项目。
    zjsxwc
        5
    zjsxwc  
       2020-03-14 21:49:03 +08:00 via Android
    字典数据是用来做什么用的谁解释下,我看到好几个后台都有这个,但是不知道干什么用的
    gzlock
        6
    gzlock  
       2020-03-14 21:55:23 +08:00
    egg.js+nuxt.js 挺好撸管理后台的,我已经撸几个了
    manami
        7
    manami  
       2020-03-14 22:02:40 +08:00   ❤️ 1
    @zjsxwc 字典数据主要用来解决数据复用的问题,比如常见的一些下拉选择框数据什么的不可能都写死
    wangxiaoaer
        8
    wangxiaoaer  
       2020-03-14 22:05:15 +08:00 via Android
    纯好奇,这种脱离业务的权限管理有什么意义?
    manami
        9
    manami  
       2020-03-14 22:05:22 +08:00
    @zjsxwc 老哥你主页的网站是要搞事情。。。
    renmu
        10
    renmu  
       2020-03-14 22:06:28 +08:00 via Android
    先 mark 之后看一下,最近在开发公司内部的一个系统
    linxl
        11
    linxl  
       2020-03-14 22:24:27 +08:00
    已 star. 弱弱问下, 右侧的 tab 在切换的时候能不能做到不刷新, 抱持之前的数据状态?
    zjsxwc
        12
    zjsxwc  
       2020-03-14 22:32:01 +08:00 via Android
    @manami #9 原文:“@zjsxwc 老哥你主页的网站是要搞事情。。。”
    回复:汗😓我这个域名暂时不知道用来干嘛,直接让他转跳了百度没毛病啊
    loading
        13
    loading  
       2020-03-14 22:35:19 +08:00 via Android
    希望能顺手做个极小的 app,演示一下如何配合运行。
    loading
        14
    loading  
       2020-03-14 22:42:39 +08:00 via Android
    哦,是个脚手架。
    挺好的,可惜我前后端用的库都不一样。
    chengxiao
        15
    chengxiao  
       2020-03-14 23:06:09 +08:00
    @wangxiaoaer 脚手架 方便起新项目
    Ritter
        16
    Ritter  
       2020-03-14 23:28:40 +08:00 via Android
    star 了 学习学习
    llussy
        17
    llussy  
       2020-03-14 23:56:06 +08:00 via iPhone
    star 了 明天学习学习
    mlzboy
        18
    mlzboy  
       2020-03-15 01:09:12 +08:00
    用 gin 可以编译成单文件发布到线上么
    waising
        19
    waising  
       2020-03-15 01:10:07 +08:00 via iPhone
    支持一下
    zwj777
        20
    zwj777  
    OP
       2020-03-15 11:04:01 +08:00
    @mlzboy 目前项目中配置文件还是需要单独发布
    zwj777
        21
    zwj777  
    OP
       2020-03-15 11:04:42 +08:00
    @loading 后续会考虑的,谢谢
    madNeal
        22
    madNeal  
       2020-03-15 12:36:30 +08:00
    @linxl 使用 keep-live,vue-element-admin 里面的组件是有的,楼主的前端代码貌似不是最新的
    zwj777
        23
    zwj777  
    OP
       2020-03-15 15:07:27 +08:00
    @madNeal 前端代码有一段时间了,先稳定下来,在做更新
    biguokang
        24
    biguokang  
       2020-03-15 16:02:36 +08:00
    你做的这个和我之前发的项目技术栈差不多
    https://www.v2ex.com/t/652360

    也是 gin+vue+elementui,只不过我这个是用 typescript 写的
    zwj777
        25
    zwj777  
    OP
       2020-03-15 16:10:03 +08:00
    @biguokang 可以一起学习交流
    BenX
        26
    BenX  
       2020-03-15 16:49:10 +08:00 via iPhone
    看看分离的如何
    zwj777
        27
    zwj777  
    OP
       2020-03-20 19:11:59 +08:00
    @BenX 一起学习
    lissbeh
        28
    lissbeh  
       2020-03-23 13:27:41 +08:00
    楼主的脚手架整理得很不错。
    不过 go 项目的模块划分,一般不用这类 mvc 风格的架构,而是按功能职责拆分的。像很多 go 的开源项目,一个功能模块就是一个目录,比如 moby 项目下面就按功能分成 daemon 、container 等。
    两种风格没有绝对好坏,也可以揉合在一起。不过 go 项目最佳实践通常是后者,这种架构风格,很多时候便于单个模块从单体应用中分离出来,成为微服务。
    可以看看这篇文章的模块拆分小节
    https://draveness.me/golang-101
    zwj777
        29
    zwj777  
    OP
       2020-03-23 14:18:25 +08:00
    @lissbe 谢谢!从其他语言转过来,编码风格上难免遗留了之前的编码风格,后续是需要改善的难免误导他人😀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.