美文网首页javaWeb学习java
Swagger配置鉴权token

Swagger配置鉴权token

作者: 李征兵 | 来源:发表于2019-12-26 18:54 被阅读0次

众所周知swagger在API文档生成及测试方面非常方便,但是很多的API调用都需要用到token验证,本文就介绍两中自动添加token的方法。以下的配置代码都是在swagger config类里边。

对每个API都添加header字段

这个方案的优点是每个API测试的时候都可以分别设置token,缺点是大量重复输入token字段,如果API数量众多或者写入header的字段多就很麻烦。

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.platform.middle.user.base.web"))
                .paths(PathSelectors.any())
                .build()
                .globalOperationParameters(defaultHeader())
                ;
    }
    private static List<Parameter> defaultHeader(){
        ParameterBuilder appType = new ParameterBuilder();
        appType.name("app-type").description("应用类型").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
        ParameterBuilder appToken = new ParameterBuilder();
        appToken.name("app-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
        List<Parameter> pars = new ArrayList<>();
        pars.add(appType.build());
        pars.add(appToken.build());
        return pars;
    }

重点是在原先swagger的Docket对象后面添加globalOperationParameters方法。运行的效果如图:

认证用的token作为API的header类型输入参数

全站统一header设置

这种方案就简化了第一种方案,在swagger UI上出现一个Authorize按钮,一次输入header参数,全站使用。

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.platform.middle.common.fastdfs.web"))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(unifiedAuth())
                ;
    }
    private static List<ApiKey> unifiedAuth() {
        List<ApiKey> arrayList = new ArrayList();
        arrayList.add(new ApiKey("app-type", "app-type", "header"));
        arrayList.add(new ApiKey("app-token", "app-token", "header"));
        return arrayList;
    }

重点是在原先swagger的Docket对象后面添加securitySchemes方法。运行的效果如图:

统一header字段设置
这样就在每次调用API的时候把app-token、app-type作为header内容发送给服务端。服务端就可以用这些字段进行必要的认证。

相关文章

  • Swagger配置鉴权token

    众所周知swagger在API文档生成及测试方面非常方便,但是很多的API调用都需要用到token验证,本文就介绍...

  • 鉴权token和refresh_token

    每次访问鉴权使用token,token使用aes对称加密,鉴权时直接解密得到uid,无需访问数据库验证,鉴权tok...

  • Koa 使用 JWT 实现鉴权

    JWT 鉴权的优势 JWT (JSON Web Token) 是现今比较主流的的登录鉴权方式。token 类似一个...

  • JWT

    概述 JWT 基于 token 的鉴权机制,基于 token 的鉴权机制类似于 http 协议也是无状态的,它不需...

  • 什么是token?

    什么是token?   token就是令牌,前后端进行鉴权的一种有效形式,比传统的 session 鉴权更加方便,...

  • swagger 配置Token

    后台有权限认证是springboot+jwt+shiro+swagger的,swagger配置token 1 首先...

  • 鉴权和权限管理的探索

    传统鉴权方案是通过Session ID完成的,现在一般使用Token鉴权。 1.认证与鉴权 分布式session ...

  • spring boot集成shiro之前后端分离

    前后端分离之后,接口跨域无法鉴权,所以这里需要人工配置token,做法很简单继承DefaultWebSession...

  • token鉴权

    什么是token鉴权呢?token就是令牌的意思,举个生活中的例子:大家肯定都去过ktv,你在收银台交过钱后,一般...

  • BATJ都会用到的接口鉴权cookie、session 和tok

    鉴权 鉴权是指验证用户是否拥有访问系统的权利—鉴定权限。 cookie、session和token 为什么会有co...

网友评论

    本文标题:Swagger配置鉴权token

    本文链接:https://www.haomeiwen.com/subject/qteloctx.html