Stories

Detail Return Return

JeecgBoot 如何在生產環境關閉 Swagger 文檔 - Stories Detail

為了生產安全,我們需要在生產環境關閉 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

圖片

user avatar openfuyao Avatar u_16640205 Avatar u_17397181 Avatar zzger Avatar wnhyang Avatar pannideniupai Avatar digitalocean Avatar quanzhikeji Avatar smartbidashuju Avatar zhaodawan Avatar chengxy Avatar huamingshixunkeji Avatar
Favorites 18 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.