目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

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


作者:Soulboy