为了生产安全,我们需要在生产环境关闭 JeecgBoot 的 Swagger 文档功能。
介绍
JeecgBoot 作为一个低代码开发平台,可以自动生成 OpenAPI 标准的 RESTful 协议的接口文档,方便前后端分离式的开发模式,进行前后端对接,以及接口调试。
不过由于该开发通常情况下来说,仅限于开发环境、测试环境,不适用于生产环境、线上环境等,因为该文档存在暴露系统内部信息的风险,一旦被有心之人利用,有可能会造成生产危机。
所以本文将为大家介绍,如何在 JeecgBoot 框架中,在生产环境对接口文档进行快捷禁用。
单体模式
JeecgBoot 框架默认提供了三种 profile 的配置文件,分别是 dev、test、prod,分别对应开发环境、测试环境、生产环境,在 prod 配置文件中配置了用于关闭 swagger 接口文档的配置
knife4j.production=true
另外还有一个共用的 application.yml 配置文件,其中有一个 spring.profiles.active 的配置项,通过修改该值,即可指定当前系统采用什么模式启动。
不过我们可以看到默认值为 @profile.name@,这是 JeecgBoot 为了方便大家在进行 maven 打包时指定以什么模式打包,而不需要去修改配置文件中的配置项。
在图的右上方我们可以看到 maven 工具面板上 profile 栏中,列举了 dev、test、prod 共 4 个 profile,我们可以选择其中一个进行打勾,再点击下方 clean 命令、package 命令即可。
最后,启动运行后,我们再尝试访问接口文档地址:
http://localhost:8080/jeecg-boot/doc.html
发现页面的无法响应,不再是接口文档,而是一个没有任何接口信息的白页。
微服务模式
在微服务模式中,完全继承单体模式的关闭接口文档的配置,不过不同的是,由于微服务模式下服务数量不可估量,如果有 N 个服务,那就会有 N 个服务的接口文档地址,这样使用下来,未免太可繁琐。 JeecgBoot 考虑到了这点,结合微服务模式中的 gateway 服务,将所有子服务的接口文档进行聚合,聚合后可通过一个地址即可访问所有服务的接口文档。
不过也正是因为这个功能,所以我们在关闭接口文档时,除了沿用单体模式的操作之外,也需要额外多加一个针对 gateway 服务的处理,需要在 gateway 服务的配置文件中,添加配置。
knife4j.production=true
再次访问聚合接口文档地址: http://localhost:9999/doc.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2023-08-16 JimuReport v1.6.1版本发布,修复 Freemarker 模板注入高危漏洞
2021-08-16 JeecgBoot 2.4.6 版本发布,基于代码生成器的企业级低代码平台