SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

通過前面的文章,我們一步步實現了前後端分離模式下的基於token實現系統權限驗證

也實現了對 Swagger 的集成

通過 Swagger 提供的網頁,我們可以直接對後臺接口實現單元測試,但是在前後端分離的項目中,請求時需要附帶鑑權使用的 token,否則會被系統拒絕訪問。

所以本文要解決的就是,使用 Swagger2 進行單元測試時,怎麼傳遞 Token 的問題。

目標

整合 SpringSecurity 實現使用 Swagger2 文檔對後臺接口進行測試,並傳入Token。

操作步驟

一、方案一

配置 Swagger2

通過 globalOperationParameters 方法為接口添加參數

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

配置 SpringSecurity

SpringSecurity 默認會將 Swagger-UI 的網頁攔截,所以要訪問 Swagger2 的接口文檔,需要去掉攔截。

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

編寫接口

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

驗證

通過地址 http://localhost:8080/swagger-ui.html 訪問 Swagger2 接口文檔,選擇上一步編寫的測試接口,點擊 Try it out,如下圖所示,可以看到 Authorization 變成了可輸入項。

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

我們什麼也不輸入,直接點擊 Execute 按鈕接交請求,結果返回如下,請求被 AuthenticationEntryPoint 攔截,說明當前用戶未登錄。

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

使用 postman 訪問 http://localhost:8080/login 進行登錄,登錄成功後會返回 token,將 token 的值填入 Authorization 輸入項,再次接交,結果顯示 測試成功,請求被放行。

二、升級方案

按上面的方法,測試一個接口沒有問題,但是如果要測試很多接口,則需要在每一次測試時,手動填上 token 值,非常麻煩,有沒有辦法填寫一次,所有接口都可以共用呢?

修改 Swagger2 註冊

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

驗證

通過地址 http://localhost:8080/swagger-ui.html 訪問 Swagger2 接口文檔,

如下圖所示,原來的 Authorization 輸入框消失了,出現的是右上角的 Authorize 按鈕

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

點擊按鈕會出現一個彈窗,彈窗內可輸入 Authorization

SpringBoot2.0實戰(29)整合SpringSecurity之Swagger附帶Token

源碼地址

本章源碼 : https://gitee.com/gongm_24/spring-boot-tutorial.git


分享到:


相關文章: