您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Swagger2怎么配置Security授權(quán)認(rèn)證”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Swagger2怎么配置Security授權(quán)認(rèn)證”吧!
package com.ytm.yeb.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * @author TongMing Yang * @since 2021/1/12 */ @EnableSwagger2 @Configuration public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()) // 是否開(kāi)啟 .enable(true).select() // 掃描的路徑包 .apis(RequestHandlerSelectors.basePackage("com.ytm.yeb.controller")) // 指定路徑處理PathSelectors.any()代表所有的路徑 .paths(PathSelectors.any()).build() .pathMapping("/") .securitySchemes(securitySchemes()) .securityContexts(securityContexts()); } private List<ApiKey> securitySchemes() { List<ApiKey> apiKeyList= new ArrayList(); apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); return apiKeyList; } private List<SecurityContext> securityContexts() { List<SecurityContext> securityContexts=new ArrayList<>(); securityContexts.add( SecurityContext.builder() .securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("^(?!auth).*$")) .build()); return securityContexts; } List<SecurityReference> defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; List<SecurityReference> securityReferences=new ArrayList<>(); securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); return securityReferences; } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("云E辦接口文檔") .description("云E辦接口文檔") .contact(new Contact("yeb", "http://localhost:8081/doc.html", "ytm5021@163.com")) .version("1.0") .build(); } }
**網(wǎng)上介紹:**Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。
總體目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許 API 來(lái)始終保持同步。Swagger 讓部署管理和使用功能強(qiáng)大的 API 從未如此簡(jiǎn)單。
1.引入依賴
Swagger2 3.0由于新增了Starter 因此可以直接使用starter方式 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> 在沒(méi)有starter前 一般都是引入以下依賴 兩個(gè)依賴的版本最好一致,避免出現(xiàn)沖突 <!-- <!– https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 –>--> <!-- <dependency>--> <!-- <groupId>io.springfox</groupId>--> <!-- <artifactId>springfox-swagger2</artifactId>--> <!-- <version>3.0.0</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>io.springfox</groupId>--> <!-- <artifactId>springfox-swagger-ui</artifactId>--> <!-- <version>3.0.0</version>--> <!-- </dependency>-->
tips:推薦使用idea的插件,方便查看依賴沖突:
2.攔截配置
package com.deer.primer3.config; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.*; /** * @author lujy * @version 1.0 * @date 2021/2/2 12:36 */ @EnableWebMvc @Configuration @Slf4j public class CorsConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/") .resourceChain(false); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/swagger-ui/") .setViewName("forward:/swagger-ui/index.html"); } //這個(gè)是跨域配置 不需要的可以不配 @Override public void addCorsMappings(CorsRegistry registry) { log.info("跨域配置開(kāi)啟"); registry.addMapping("/**") .allowedOriginPatterns("*") .allowedMethods("*") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); } }
3.可選配置
/** * @author lujy * @version 1.0 * @date 2021/2/7 10:04 */ @Configuration @EnableOpenApi public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) .apiInfo(api()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo api() { return new ApiInfoBuilder() .title("Swagger3接口文檔") .description("文檔描述") .contact(new Contact("lujy", "#", "18506239610@163.com")) .version("1.0") .build(); } }
new Docket(DocumentationType documentationType); 有參構(gòu)造 參數(shù) 對(duì)應(yīng)為 swagger版本
.apiInfo(api()) return —>>>Docket ApiInfoBuilder()
.select() —>>> return ApiSelectorBuilder
ApiSelectorBuilder .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
尋找Controller層請(qǐng)求處理的方法中有ApiOperation的注解(個(gè)人理解)
SpringSecurity 攔截放行
坑:
swagger 似乎 無(wú)法進(jìn)行文件上傳 測(cè)試多次 后臺(tái)都報(bào) 空指針,用postman測(cè)試則沒(méi)有影響
到此,相信大家對(duì)“Swagger2怎么配置Security授權(quán)認(rèn)證”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。