Skip to content

power4j/ji-boot

Folders and files

NameName
Last commit message
Last commit date
Aug 8, 2021
Feb 4, 2021
Nov 17, 2020
Sep 3, 2021
Mar 19, 2021
Jun 17, 2022
Jun 17, 2022
Sep 3, 2021
Nov 17, 2020
Feb 4, 2021
Jan 16, 2021
Sep 3, 2021
Feb 12, 2021
Feb 15, 2021
Nov 17, 2020
Mar 4, 2022
Nov 17, 2020

Repository files navigation

极(Ji) - 基于Spring Boot 2 的前后端分离权限管理系统

Java CI with Maven Codacy Badge Quality Gate Status

  • 使用 Spring Boot 最新版本
  • 基于Spring Security 的 RBAC权限控制,访问控制可配置,也可以注解
  • 菜单、按钮权限动态控制,且有越权控制
  • 可选择使用RedisCaffeine作为缓存,可以满足集群、单机部署需求。
  • 基于OpenAPI V3的API文档管理,支持swaggerknife4j
  • 公共模块组件化,方便独立维护,代码复用性高
  • 前后端采用开源框架D2-Admin,使用d2-crud-plus极大提高了UI开发效率

本项目实现了一个权限管理系统的最基础部分,适合开发中小型项目,由于功能简洁,可以很容易地进行定制, 变成你自己的starter脚手架。

体验地址 http://ji-boot-demo.etcd.ltd/

用户名/密码: admin/admin

如需本地部署体验,请使用ji-boot-docker项目

注意事项:本项目使用spring-javaformat插件来统一代码风格,项目打包报错请执行mvn spring-javaformat:apply一键修复。

功能

  • API文档:可同时使用swaggerknife4j
  • 资源管理:负责管理UI资源,如菜单、按钮
  • 权限管理:用户、角色、资源授权、角色授权
  • 公共参数、数据字典
  • 常量字典: 消除硬编码,前后端统一维护字典数据
  • 服务异常报: 微信、钉钉
  • 任务调度
  • 登录日志、接口审计日志
  • 数据权限
  • 报表功能
  • 公众号、小程序登录认证
  • 支付宝、微信支付

用到的开源框架、组件

配置项

ji-boot:
  doc:
    global-security-scheme: 
      # 开启后能在swagger页面设置api-token,这样才能以用户的身份调用后端接口
      enabled: false
  # 缓存配置
  cache:
    # redisson caffeine none
    type: redisson
    caffeine:
      spec: "expireAfterWrite=24h,maximumSize=100000"
    redisson:
      ttl: 86400000
      max-idle-time: 36000
      max-size: 0
  notify:
    # 钉钉消息通知
    ding-talk:
      enabled: true
    # 公众号消息通知
    wx-mp:
      enabled: true
      app-id: ${WX_MP_APPID:wxc6222bd36479c057}
      secret: ${WX_MP_SECRET}
      # 消息订阅者
      subscribers: oiwtWuMNNa6njL3bE7_9ADOKMEWc
  # 常量字典
  dict:
    # 需要扫描项目以外的包
    scan-packages: com.power4j.ji
    # 启用内建的API接口
    enable-endpoint: true
    # 接口URL
    endpoint-base-url: /sys/immutable-dictionaries
  # 自定义验证码产生地址和消费地址
  captcha:
    code-url: '/code'
    consumer: '/login'
  security:
    # 可自定义登录、注销地址
    login-url: '/login'
    logout-url: '/logout'
    api-token:
      # 过期时间,秒
      expire-sec: 86400
      # 每个用户的并发登录控制
      max-user-token: 2
    # 自定义安全访问控制
    access:
      enabled: true
      # 静态资源,放行
      ignore:
        patterns: "/static/**,/webjars/**,/favicon.ico"
      filters:
        # 只允许特定IP访问监控端点
        - patterns: '/actuator/**'
          methods: GET,POST
          access: 'hasIpAddress("127.0.0.1")'
        # swagger 放行
        - patterns: '/swagger-ui/**,/swagger-ui.html,/swagger-resources'
          methods: GET
          access: permitAll
        # knife4j 放行  
        - patterns: '/doc.html'
          methods: GET
          access: permitAll
        # OpenAPI端点 放行    
        - patterns: '/v3/api-docs/**'
          methods: GET
          access: permitAll
        # 验证码服务放行  
        - patterns: ${ji-boot.captcha.service-url}
          methods: GET
          access: permitAll
        # druid 监控放行  
        - patterns: '/druid/**'
          methods: GET,POST
          access: permitAll

界面截图

ui-sys-res.png

rp-preview.png

rp-design.png

sys-org.png

knife4j.png

swagger.png

wx-err-notify.png

ding-err-notify.png

性能

目前只对认证过程做了缓存优化,因为这个地方性能瓶颈较大,优化前后差距巨大。

测试结果

Jmeter 配置

jmeter-test

1C2G 云服务器(corretto Jdk 11) -Xms256m -Xmx512m

1c2g-ar

12C16G 台式机(oracle Jdk 8) -Xms1g -Xmx1g

12c16g-ar

Special Thanks

联系方式

weichat