天天看点

Swagger2+oauth2配置

  • 导入依赖
<!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-bean-validators</artifactId>
            <version>3.0.0</version>
        </dependency>
           
  • 配置信息
@Bean
    public Docket createRestApi() {
        List<Response> responses = new ArrayList<Response>() {{
            add(new ResponseBuilder().code("201")
                .description("创建成功")
                .build());
            add(new ResponseBuilder().code("202")
                .description("请求已受理,正在进一步处理")
                .build());
            add(new ResponseBuilder().code("204")
                .description("请求已成功,但无需更多描述信息")
                .build());
            add(new ResponseBuilder().code("400")
                .description("请求参数错误或格式不正确")
                .build());
            add(new ResponseBuilder().code("401")
                .description("Token 验证失败")
                .build());
            add(new ResponseBuilder().code("403")
                .description("登录失败或权限禁止")
                .build());
            add(new ResponseBuilder().code("417")
                .description("参数格式不正确")
                .build());
        }};
        return new Docket(DocumentationType.SWAGGER_2)
            .securitySchemes(Collections.singletonList(securitySchemes()))
            .securityContexts(Collections.singletonList(securityContexts()))
            .globalResponses(HttpMethod.GET, responses)
            .globalResponses(HttpMethod.POST, responses)
            .globalResponses(HttpMethod.PUT, responses)
            .globalResponses(HttpMethod.HEAD, responses)
            .globalResponses(HttpMethod.DELETE, responses)
            .select()
            .apis(RequestHandlerSelectors.basePackage("wlgzs.exam.controller"))
            .build()
            .apiInfo(apiInfo());
    }

    /**
     * 认证方式使用密码模式
     */
    private SecurityScheme securitySchemes() {
        GrantType grantType = new ResourceOwnerPasswordCredentialsGrant("/oauth/token");
        return new OAuthBuilder()
            .name("Authorization")
            .grantTypes(Collections.singletonList(grantType))
            .scopes(Arrays.asList(scopes()))
            .build();
    }

    /**
     * 设置 swagger2 认证的安全上下文
     */
    private SecurityContext securityContexts() {
        return SecurityContext.builder()
            .securityReferences(Collections.singletonList(new SecurityReference("Authorization", scopes())))
            .operationSelector((each) -> true)
            .build();
    }

    /**
     * 允许认证的scope
     */
    private AuthorizationScope[] scopes() {
        AuthorizationScope authorizationScope = new AuthorizationScope("all", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return authorizationScopes;
    }

    /**
     * 添加摘要信息
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("API在线考试文档")
            .build();
    }
           
Swagger2+oauth2配置
Swagger2+oauth2配置

继续阅读