swagger3配置类

该配置类用于设置Swagger2,创建了一个Docket实例,定义了API信息,包括系统名称和描述。配置了安全方案,使用apiKey作为认证方式,添加了全局请求头中的令牌。安全上下文针对除auth路径外的所有路径进行授权,允许访问所有资源。
摘要由CSDN通过智能技术生成
Configuration//声明当前类是一个配置类
public class SwaggerConfig {

    @Bean//往spring 容器里面加一个对象
    public Docket getDocket() {
        //swagger 有安全配置,可以在全局上在请求头中加入令牌
        //authentication
        ApiInfo apiInfo = new ApiInfoBuilder().title("物业管理系统").description("这是一个小区物业管理系统,目前正在开发,作者是XXX").build();

        return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.hx.property.controller"))//指定哪些包下面的控制器生成文档
                //  /* 匹配单层路径   /**  匹配多层路径  ?匹配一个字符
                .paths(PathSelectors.ant("/**")).build().securitySchemes(securitySchemes()).securityContexts(securityContexts());
    }

    private List<SecurityScheme> securitySchemes() {
        List<SecurityScheme> securitySchemes = new ArrayList<>();
        securitySchemes.add(new ApiKey(LoginInterceptor.tokenName, LoginInterceptor.tokenName, "header"));
        return securitySchemes;
    }

    private List<SecurityContext> securityContexts() {
        List<SecurityContext> securityContexts = new ArrayList<>();
        securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth())
                .forPaths(PathSelectors.regex("^(?!auth).*$")).build());
        return securityContexts;
    }

    private 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(LoginInterceptor.tokenName, authorizationScopes));
        return securityReferences;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值