SpringBoot集成Swagger3接口文档及添加Authorization授权

news2024/10/6 22:19:52

swagger可以为前端提供接口文档及接口测试功能,后端集成起来很方便,对代码也没有入侵,全注解完成,非常好用。

一、集成基础功能

第一步、添加依赖

        <!-- swagger3 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

 第二步、创建配置文件Swagger3Config

@Configuration
@EnableOpenApi
public class Swagger3Config {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                // 自行修改为自己的接口路径,不配置扫描全部路径
                .apis(RequestHandlerSelectors.basePackage("com.by.hellosecurityresource.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger3 API文档")
                .description("RESTFul 风格接口")
                .version("1.0")
                .build();
    }


}

第三步、给接口添加注解

@Api(tags = "测试不需要登录验证就能访问的接口")

@RestController
@RequestMapping("/noAuth")
public class NoAuthController {

    /**
     * 服务对象
     */
    private TestService testService;

    public NoAuthController(TestService testService) {
        this.testService = testService;
    }

    @Operation(summary = "获取test列表数据")
    @RequestMapping(value = "", method = RequestMethod.GET)
    public Page<STest> list(@RequestParam @Parameter(description = "页数从1开始", required = true) int page,
                            @RequestParam @Parameter(description = "每页的条数", required = true) int limit,
                            HttpServletRequest request) {

        return testService.list(page - 1, limit);

    }

}

Api  给Controller添加的注解

Operation 给Contoller里的方法添加的注解

Parameter 给方法中参数添加的注解

Schema 给实体类及其变量添加的注解

@Schema(description = "test数据")
@Setter
@Getter
public class TestRequestBean {

    @Schema(description = "测试字段1")
    private String test;

    @Schema(description = "测试字段2")
    private String value;
    

}

访问地址: baseUrl/swagger-ui/index.html

 二、让swgger文档支持授权访问

修改配置文件,使swagger支持添加token

@Configuration
@EnableOpenApi
public class Swagger3Config {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                // 自行修改为自己的接口路径,不配置扫描全部路径
                .apis(RequestHandlerSelectors.basePackage("com.by.hellosecurityresource.controller"))
                .paths(PathSelectors.any())
                .build()//;
                .securitySchemes(securitySchemes())
                .securityContexts(Collections.singletonList(securityContext()));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger3 API文档")
                .description("RESTFul 风格接口")
                .version("1.0")
                .build();
    }

    private List<SecurityScheme> securitySchemes() {
        List<SecurityScheme> apiKeyList= new ArrayList<>();
        //注意,这里应对应登录token鉴权对应的k-v
        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
        return apiKeyList;
    }

    /**
     * 这里设置 swagger2 认证的安全上下文
     */
    private SecurityContext securityContext() {
        return SecurityContext.builder()
                .securityReferences(Collections.singletonList(new SecurityReference("Authorization", scopes())))
                .build();
    }

    /**
     * 这里是写允许认证的scope
     */
    private AuthorizationScope[] scopes() {
        return new AuthorizationScope[]{
                new AuthorizationScope("web", "All scope is trusted!")
        };
    }

}

ResourseServer配置中,过滤以下路径,使不通过验证就能访问到,否则无法打开swagger文档

"/swagger-ui/**"
"/swagger-resources/**"
"/v3/**"

示例代码如下

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/noAuth/**", "/swagger-ui/**", "/swagger-resources/**", "/v3/**").permitAll() //设置/oauth/**的接口不需要授权就可以访问
                .anyRequest().authenticated();
    }

 再次访问接口文档,会有此按钮标记 

 点击可输入token

这样,在swagger中测试接口的时候就会带上token了。

三、生产服务器注意关闭swagger文档 

在applicaiton中添加配置

springfox:
  documentation:
    auto-startup: false #false关闭swagger文档 true打开swagger

测试代码地址:

Hello-Security: OAuth2授权服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

28845-97-8,Ac-K-DAla-DAla-OH

Ac-Lys-D-Ala-D-Ala was tested as substrate in a substrate specificity study of the Streptomyces albus DD-carboxypeptidase. 以Ac-Lys-D-Ala-D-Ala为底物&#xff0c;对albus链霉菌dd -羧肽酶进行底物特异性研究。 编号: 172467中文名称: 三肽D丙氨酸羧肽酶底物CAS号: 2…

块交织器5×5 verilog设计及仿真实现

设计题目要求: 本设计基于verilog语言实现,在quartus II下仿真实现: 仿真如下: 全部代码如下: library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is --实体说明 port(datain,clk,clr:IN…

汽车轻量化 | 某SUV车型白车身的轻量化分析案例

作者 | 王山 仿真秀科普作者 导读&#xff1a;轻量化是当今各整车厂在产品开发中无法回避的问题。当考虑到成本与工艺方面时&#xff0c;更是不容易解决的问题。对于高端车型&#xff0c;其较高的设计与生产成本允许其采用先进的轻量化设计与生产工艺&#xff0c;如碳纤维复合…

函数:先序输出叶结点

问题引入 【问题描述】按照先序遍历的顺序输出给定二叉树的叶结点。 【输入形式】以字符形式输入二叉树的结点序列 输入的字符序列为&#xff1a;ABC##DE#G##F### 【输出形式】输出二叉树中叶子结点的先序序列 【样例输入】 ABC##DE#G##F### 【样例输出】 CGF 【输出形式】输出…

分布式操作系统 - 8.分布式容错管理

文章目录1.容错性概述1.1 基本概念1.2 失效&#xff08;失败&#xff09;类型1.3 失效&#xff08;失败&#xff09;模型&#xff08;halting failure&#xff09;1.4 基于冗余的失效屏蔽技术&#xff08;1&#xff09;冗余类型&#xff08;2&#xff09;三模冗余方法&#xff…

java计算机毕业设计ssm影院售票系统6fg71(附源码、数据库)

java计算机毕业设计ssm影院售票系统6fg71&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

国外Essay写作实用型技巧怎么学习?

在国外大学的学习期间&#xff0c;想必留学生对Essay是非常熟悉的&#xff0c;因为这是我们无法逃避的作业类型之一。当然&#xff0c;印象最深刻的还是大家刚开始写作Essay的时候&#xff0c;那时候真的是苦不堪言。下面就给大家分享一些Essay写作的实用型技巧&#xff0c;希望…

技术分享 | 无root权限也能高效搭建ClickHouse集群?

本文来自于擎创资深数据库工程师------禹鼎侯 写在前面&#xff1a; 本次技术分享主要介绍ClickHouse集群的tgz方式无root部署的实现思路&#xff0c;以及使用ckman如何快速地不用root权限搭建clickhouse集群。文章较长&#xff0c;干货很多&#xff0c;建议先收藏点赞以防丢失…

wireshark提取RTSP over TCP中的视频流

wireshark提取RTSP over TCP中的视频流 文章目录wireshark提取RTSP over TCP中的视频流1 背景2 提取前准备3 H264提取步骤4 后记1 背景 前面文章中介绍了rtp中提取H264或者H265视频的方式&#xff0c;其适用于基于RTP over UDP的方式&#xff0c;因为UDP方式&#xff0c;视频流…

ip 地址分类说明

1,IP地址简介 前面我们已经了解了TCP/IP协议的网络层的相关协议&#xff0c;并且已经在OSI参考模型中了解到每一个协议栈的网络层都有网络层地址&#xff0c;TCP/IP协议也不例外。本节重点介绍TCP/IP协议栈的网络层地址------IP地址。IP地址是进行复杂的子网规划的基础。 我们前…

ubuntu 18.04 crontab 设置自动开关机

Ubuntu 使用 Cron 实现计划任务 - 知乎 1、切换root su root 2、安装并启动 cron apt install cron 若已经安装&#xff0c;输入以下命令判断 cron 服务是否启动&#xff1a;pgrep cron。如果有 pid &#xff08;一串数字&#xff09;输出则说明 cron 服务已经启动&#xf…

pcl协方差计算精度

最近在计算法线的时候发现法线的结果偏差很大&#xff0c;经过分析得到在计算点云协方差矩阵时&#xff0c;选择不同的方法会导致不同的结果。下面是测试过程&#xff1a; 1、测试点云 点云是中间一点的邻域点&#xff0c;是从上往下看&#xff0c;法线的方向近似为&#xff0…

操作股票下单接口的执行流程代码分享

股票下单接口也相当于是程序化交易&#xff0c;可以根据用户的意愿&#xff0c;定制的交易计划去执行&#xff0c;还可以在一定程度上战胜人性的弱点&#xff0c;下面来看看操作股票下单接口的执行流程代码分享&#xff1a; // 委托下单 // category: 0>买入, 1>卖出,…

DataWhale - OpenCV教程01

MetaData: Author:Link: https://vxr.xet.tech/s/49dV3oPublisher:Date: 2022-12-12 - 16:28 笔记记录的时间 ✅ 2022-12-12 Tag: 软件技能 计算机视觉的发展历史&#xff1a; 1982年马尔的书《视觉》&#xff0c;将视觉的任务分为两类&#xff1a;重建和识别。2012年&#…

十年老码农现身说法:凛冬将至,为什么我不劝退互联网

大家好&#xff0c;我是xxx 这两天在B站刷到好多吐槽秋招拿不到offer的视频&#xff0c;其中有几个看得我又好笑又同情。 有一个老哥说自己19年硕士毕业的时候想要进华为但差了临门一脚没能拿到offer&#xff0c;非常遗憾&#xff0c;最后觉得一定是自己不够强所以没能如愿。…

如何运行Scala Object

一 、问题描述 执行一个Scala Obejct 程序&#xff0c;Java 沿袭过来的当然直接用main&#xff0c;Scala 官方还提供了另外的一种方法 定义的object extend App trait在object中定义好main() 二、Scala CookBook 这是一段对《 Scala Cookbook》的摘抄&#xff0c;6.4 如何运…

人工智能时代,Python还不快学起来吗

“是时候学点Python了”。作为一名不怎么安分的程序员&#xff0c;你或许觉得&#xff0c;产生这样的想法并不奇怪&#xff0c;但学习Python却是出于自己对工作现状以及如何应对未来挑战所作出的思考。读过我以前博客的朋友&#xff0c;可能都知道&#xff0c;我推崇软件领域中…

Android开发黑白灰模式和夜间模式设置

接口数据来源鸿洋大神“玩安卓”网站&#xff1a;https://wanandroid.com/ 黑白灰正常模式和黑白灰夜间模式截图 夜间模式与正常模式截图 黑白灰与原色模式设置 /*** 设置灰白色*/protected void setGrayScreen() {Paint paint new Paint();ColorMatrix cm new ColorMatrix(…

八十七氟癸基笼状聚倍半硅氧烷poss

八十七氟癸基笼状聚倍半硅氧烷poss 八十七氟癸基笼状聚倍半硅氧烷是一种含氟有机、无机杂化的笼状聚倍半硅氧烷&#xff0c;可用于可用于热塑性塑料体系改性&#xff0c;降低其表面能。也可用于自修复超疏水材料。 应用领域 1、塑料改性&#xff0c;降低表面张力 2、自修复…

【温故而知新】分布式系统(二)

分布式系统的 CAP 理论 时间&#xff1a;2022年12月12日 作者&#xff1a;小蒋聊技术 【温故而知新】分布式系统&#xff08;二&#xff09;分布式系统的 CAP 理论_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅手机版欢迎收听小蒋聊技术的其他类最新章节声音“【温故而知新】分…