Swagger开启JWT
依赖
1<dependency>
2 <groupId>io.springfox</groupId>
3 <artifactId>springfox-swagger2</artifactId>
4 <version>2.9.2</version>
5 </dependency>
6 <dependency>
7 <groupId>io.springfox</groupId>
8 <artifactId>springfox-swagger-ui</artifactId>
9 <version>2.9.2</version>
10 </dependency>
配置类
1package soulboy.emos.wx.config;
2
3import io.swagger.annotations.ApiOperation;
4import org.springframework.context.annotation.Bean;
5import org.springframework.context.annotation.Configuration;
6import springfox.documentation.builders.ApiInfoBuilder;
7import springfox.documentation.builders.PathSelectors;
8import springfox.documentation.builders.RequestHandlerSelectors;
9import springfox.documentation.service.ApiInfo;
10import springfox.documentation.service.ApiKey;
11import springfox.documentation.service.AuthorizationScope;
12import springfox.documentation.service.SecurityReference;
13import springfox.documentation.spi.DocumentationType;
14import springfox.documentation.spi.service.contexts.SecurityContext;
15import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
16import springfox.documentation.spring.web.plugins.Docket;
17import springfox.documentation.swagger2.annotations.EnableSwagger2;
18
19import java.util.ArrayList;
20import java.util.List;
21
22@Configuration
23@EnableSwagger2
24public class SwaggerConfig {
25 @Bean
26 public Docket createRestApi(){
27 //创建docket对象
28 Docket docket = new Docket(DocumentationType.SWAGGER_2);
29
30 //配置描述信息 将ApiInfo对象传入docker.apiInfo属性
31 ApiInfoBuilder builder = new ApiInfoBuilder();
32 builder.title("EMOS在线办公系统");
33 ApiInfo info = builder.build();
34 docket.apiInfo(info);
35
36 //设置swagger生效的路径
37 ApiSelectorBuilder selectorBuilder = docket.select();
38 selectorBuilder.paths(PathSelectors.any()); //所有包下面的所有类
39 selectorBuilder.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)); //使用ApiOperation的类
40 docket = selectorBuilder.build();
41
42 //swagger支持JWT(令牌在哪里)
43 ApiKey apiKey = new ApiKey("token", "token", "header");
44 List<ApiKey> apiKeyList = new ArrayList<>();
45 apiKeyList.add(apiKey);
46 docket.securitySchemes(apiKeyList);
47
48 //后续系统判定用户提交的令牌是有效的,设置令牌在swagger的作用域
49 AuthorizationScope scope = new AuthorizationScope("global", "accessEverything");
50 AuthorizationScope[] scopes = {scope};
51 SecurityReference reference = new SecurityReference("token", scopes);
52 List refList = new ArrayList();
53 refList.add(reference);
54 SecurityContext context = SecurityContext.builder().securityReferences(refList).build();
55 List cxtList = new ArrayList();
56 cxtList.add(context);
57 docket.securityContexts(cxtList);
58
59 return docket;
60 }
61
62}
测试类
1package soulboy.emos.wx.controller;
2
3import io.swagger.annotations.Api;
4import io.swagger.annotations.ApiOperation;
5import org.springframework.web.bind.annotation.*;
6import soulboy.emos.wx.common.util.R;
7
8@RestController
9@RequestMapping("/test")
10@Api("测试Web接口")
11public class TestController {
12
13 @GetMapping("/hi")
14 @ApiOperation("最简单的测试方法")
15 public R hi(){
16 return R.ok();
17 }
18
19}
URL
http://localhost:8080/emos-wx-api/swagger-ui.html#/test-controller/hiUsingGET