基于 Gin + Vue + Element UI 的前后端分离权限管理系统 - V2EX
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 的前后端分离权限管理系统

< href="Javascript:" Onclick="upVoteTopic(652835);" class="vote">
  •  1  
  •   zwj777
    wenjianzhang 2020-03-14 20:27:16 +08:00 7670 次点击
    这是一个创建于 2041 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    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
    你做的这个和我之前发的项目技术栈差不多
    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     Solana     906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 20:42 PVG 04:42 LAX 13:42 JFK 16:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86