Swagger配置鑑權token

眾所周知swagger在API文檔生成及測試方面非常方便,但是很多的API調用都需要用到token驗證,本文就介紹兩中自動添加token的方法。以下的配置代碼都是在swagger config類裡邊。

對每個API都添加header字段

這個方案的優點是每個API測試的時候都可以分別設置token,缺點是大量重複輸入token字段,如果API數量眾多或者寫入header的字段多就很麻煩。

<code>@Bean

public Docket createRestApi() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.select()

.apis(RequestHandlerSelectors.basePackage("com.platform.middle.user.base.web"))

.paths(PathSelectors.any())

.build()

.globalOperationParameters(defaultHeader())

;

}

private static List<parameter> defaultHeader(){

ParameterBuilder appType = new ParameterBuilder();

appType.name("app-type").description("應用類型").modelRef(new ModelRef("string")).parameterType("header").required(false).build();

ParameterBuilder appToken = new ParameterBuilder();

appToken.name("app-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();

List<parameter> pars = new ArrayList<>();

pars.add(appType.build());

pars.add(appToken.build());

return pars;


}/<parameter>/<parameter>/<code>

重點是在原先swagger的Docket對象後面添加***globalOperationParameters***方法。運行的效果如圖:


Swagger配置鑑權token

認證用的token作為API的header類型輸入參數

全站統一header設置

這種方案就簡化了第一種方案,在swagger UI上出現一個Authorize按鈕,一次輸入header參數,全站使用。

<code>@Bean

public Docket createRestApi() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.select()

.apis(RequestHandlerSelectors.basePackage("com.platform.middle.common.fastdfs.web"))

.paths(PathSelectors.any())

.build()

.securitySchemes(unifiedAuth())

;

}

private static List<apikey> unifiedAuth() {

List<apikey> arrayList = new ArrayList();

arrayList.add(new ApiKey("app-type", "app-type", "header"));

arrayList.add(new ApiKey("app-token", "app-token", "header"));

return arrayList;

}/<apikey>/<apikey>/<code>

重點是在原先swagger的Docket對象後面添加***securitySchemes***方法。運行的效果如圖:


Swagger配置鑑權token

統一header字段設置

這樣就在每次調用API的時候把app-token、app-type作為header內容發送給服務端。服務端就可以用這些字段進行必要的認證。


分享到:


相關文章: