swagger设置全局token,解决接口需要token验证的问题

swagger是一个很牛B的东东,但正常使用时,我们的接口需要登陆才能访问的。即登陆时,要传一个登陆后的token才能访问的。 那这个怎么设置,才可以让所有接口都允许登陆后访问呢。 解决办法如下:

@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig   {
  
    @Bean
    public Docket platformApi() {

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).forCodeGeneration(true)
                .select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .apis(RequestHandlerSelectors.any())
                .paths(regex("^.*(?<!error)$"))
                .build()
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts());


    }
    private List<ApiKey> securitySchemes() {
        List<ApiKey> apiKeyList= new ArrayList();
        apiKeyList.add(new ApiKey("x-auth-token", "x-auth-token", "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("starmark-API").description("©2018 Copyright. Powered By starmark.")
                // .termsOfServiceUrl("")
                .contact(new Contact("Starmark", "", "947618@163.com")).license("Apache License Version 2.0")
                .licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE").version("2.0").build();
    }

}

关键是在securitySchemes()方法配置里增加需要token的配置。 配置完成后,swagger-ui.html里右上角会有一个Authorize的按钮,录入该token即能成功调用相关接口

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏康怀帅的专栏

Apache PHP 配置

本文简要介绍了 Apache 解析 PHP 文件。 PHP-FPM LoadModule proxy_module modules/mod_proxy.so L...

4934
来自专栏Albert陈凯

2018-11-18 swagger2 自动生成API

作者:小莫 链接:https://www.zhihu.com/question/28119576/answer/134580038 来源:知乎 著作权归作...

2493
来自专栏xingoo, 一个梦想做发明家的程序员

Elasticsearch+Logstash+Kibana教程

参考资料 累了就听会歌吧! Elasticsearch中文参考文档 Elasticsearch官方文档 Elasticsearch 其他——那些年遇到的坑 El...

4807
来自专栏Netkiller

ElasticSearch + Logstash + Kibana 一键安装

第 19 章 ElasticSearch + Logstash + Kibana 目录 19.1. ElasticSearch + Logstash + Kib...

4764
来自专栏Linyb极客之路

使用Swagger生成Spring Boot微服务API文档

springfox是产生API文档,而swagger-ui 则是RestAPI的界面。 创建一个RestController ,定义API:

2092
来自专栏小尘哥的专栏

美化一下你的API文档吧(springboot集成swagger及遇到的问题)

微服务的流行提供了诸多的方便,随着也带来了N多的API,而swagger2正是一个对API管理的很好的“工具”,本文主要介绍springboot对swagger...

2093
来自专栏deepcc

phpStudy 2016 更新下载,新版支持php7.0

5537
来自专栏数据和云

分区表可以使用不同BLOCK_SIZE的表空间吗?

编辑手记:Oracle数据库中有两种类型的块,标准块和非标准块。非标准块的引入给数据库的管理带来了方便,但在使用的时候也有一些限制。本文将会详细解读块大小对于分...

33511
来自专栏有趣的django

微信小程序实战–集阅读与电影于一体的小程序项目(四)

1852
来自专栏我的博客

Redhat apache基本配置修改http.conf

ServerTokens Prod #OS改为Prod屏蔽系统版本号显示 DocumentRoot “/var/www/html” #这个是根目录 # Al...

2834

扫码关注云+社区

领取腾讯云代金券