swagger3 +srpingsecurity

2023-05-16

引入jar包

参考swagger官网http://springfox.github.io/springfox/docs/current/#quick-start-guides

        <!--swagger引入-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

swagger配置

package com.graduate.partybuilding.config;

import com.fasterxml.classmate.TypeResolver;
import com.graduate.partybuilding.auth.util.JwtTokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseBuilder;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.schema.ScalarType;
import springfox.documentation.schema.WildcardType;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.*;

import java.time.LocalDate;
import java.util.List;

import static java.util.Collections.singletonList;
import static springfox.documentation.schema.AlternateTypeRules.newRule;

//配置类注解
@Configuration
@EnableOpenApi
public class SwaggerConfig {
    /**
     * 创建API应用
     *  apiInfo() 增加API相关信息
     *  通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     *  本例采用指定扫描的包路径来定义指定要建立API的目录。
     * @return
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                //扫描该包下面的API注解
                .apis(RequestHandlerSelectors.basePackage("com.graduate.partybuilding"))
                .paths(PathSelectors.any())
                .build()
                .pathMapping("/")
                .useDefaultResponseMessages(false)
                .securitySchemes(singletonList(apiKey()))
                .enableUrlTemplating(true);
    }

    /**
     * token 认证
     * @return
     */
    private ApiKey apiKey() {
        return new ApiKey(JwtTokenUtil.TOKEN_HEADER, JwtTokenUtil.TOKEN_HEADER, "header");
    }

    @Bean
    UiConfiguration uiConfig() {
        return UiConfigurationBuilder.builder()
                .deepLinking(true)
                .displayOperationId(false)
                .defaultModelsExpandDepth(1)
                .defaultModelExpandDepth(1)
                .defaultModelRendering(ModelRendering.EXAMPLE)
                .displayRequestDuration(false)
                .docExpansion(DocExpansion.NONE)
                .filter(false)
                .maxDisplayedTags(null)
                .operationsSorter(OperationsSorter.ALPHA)
                .showExtensions(false)
                .showCommonExtensions(false)
                .tagsSorter(TagsSorter.ALPHA)
                .supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS)
                .validatorUrl(null)
                .build();
    }
    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:http://项目实际地址/swagger-ui/index.html
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //接口管理文档首页显示
                .title("title")
                //API文档的描述
                .description("描述")
                .contact(new Contact("作者姓名","IP address","email"))
                //网站url
                .termsOfServiceUrl("")
                .version("1.0")
                .build();
    }
}

开放security的拦截

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring()
                .antMatchers(
                        "/v3/api-docs",
                        "/swagger-resources/**",
                        "/swagger-ui/**",
                        "/webjars/**");
    }
}

开放mvc对静态资源的配置

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
/*
     * 配置静态资源,避免静态资源请求被拦截
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
        super.addResourceHandlers(registry);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swagger3 +srpingsecurity 的相关文章

随机推荐

  • 反思了一下过去几年的程序员之路

    最近回忆起一年前的找工作时的面试时的题目 xff0c 很多基础题都没做好 xff0c 很多概念也混淆不清 虽然自己这几年写的代码不少 xff0c 但都使用自己熟悉的东西写 xff0c 而已经有很多新的技术新的方法却没有使用过 一方面公司自己
  • 怎样使用OpenCV进行人脸识别 [停止更新]

    唯一持续维护地址 xff1a http guoming me face recognition with opencv 更新 2013 6 27 停止人脸识别的研究 xff0c 具体人脸识别系统可以参见文章 使用Kinect进行人脸识别 K
  • OpenCV矩阵运算

    一 矩阵 Mat I img I1 I2 dst A B double k alpha Scalar s 1 加法 I 61 I1 43 I2 等同add I1 I2 I add I1 I2 dst mask dtype scaleAdd
  • OpenCV官方学习文档[2013-7-4更新][最新版本2.4.6]

    最新的OpenCV2 4 6文档更新参见 xff1a http guoming me opencv OpenCV配置视频 OpenCV2 4 6 2013 7 3更新 http opencv org opencv 2 4 6 is out
  • adb: error: failed to copy ... remote couldn‘t create file: Permission denied

    参考 xff1a https blog csdn net qq 39952796 article details 104511806
  • Java面试题总结(乱序版,2020-09-03)

    一 如何实现数组和 List 之间的转换 xff1f String arr 61 34 zs 34 34 ls 34 34 ww 34 List lt String gt list 61 Arrays asList arr System o
  • 【计算机网络 24】TCP/IP数据包结构详解

    一 前言 一般来说 xff0c 网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作 xff0c 但是一些特殊的情况下 xff0c 就需要深入的理解 网络数据包的结构 xff0c 以及协议分析 如 xff1a 网络监控 xff
  • 读《Java编程思想第五版》心得体会

    x1f345 Java学习路线 xff1a 搬砖工逆袭Java架构师 x1f345 简介 xff1a Java领域优质创作者 x1f3c6 CSDN哪吒公众号作者 Java架构师奋斗者 x1f4aa x1f345 扫描主页左侧二维码 xff
  • 操作系统基础知识详解

    作者简介 哪吒 CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 专注Java硬核干货分享 立志做到Java赛道全网Top N 本文收录于 Java基础教程系列 目前已经700 订阅 CSDN最
  • 【SUSE Linux kernel版本升级】SUSE Linux Enterprise Server 12 SP5

    安装完SUSE Linux操作系统后 xff0c 正常会将SUSE Linux的kernel升级至最新版本 本次实验环境是SUSE Linux Enterprise Server 12 SP5 xff1a cat etc release S
  • 一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

    消息队列 为什么写这篇文章 博主有两位朋友分别是小A和小B 小A xff0c 工作于传统软件行业 某社保局的软件外包公司 xff0c 每天工作内容就是和产品聊聊需求 xff0c 改改业务逻辑 再不然就是和运营聊聊天 xff0c 写几个SQL
  • iOS开发之NSMutableParagraphStyle富文本

    在iOS开发中 xff0c 常常会有一段文字显示不同的颜色和字体 xff0c 或者给某几个文字加删除线或下划线行间距的需求 就需要富文本来实现 一 实例化方法和使用方法 NSMutableAttributedString detailStr
  • Ubuntu一直卡死的问题(18.04)

    昨天今天Ubuntu突然出现了一个问题 xff0c 就是每次开机不到5分钟 xff0c 随便点击一下浏览器或者其他的地方就会卡住 xff0c 但是鼠标可以移动 xff0c 就是无法点击 xff0c 而且等待一段时间后会出现黑屏然后提示如下图
  • 作为一个普通的程序员,到底应不应该转型AI工程师?

    动不动就是50万的毕业生年薪 xff0c 动不动就是100万起步价的海归AI高级人才 xff0c 普通员到底应不应该转型AI工程师 xff0c 普通程序员到底应该如何转型AI工程师 xff1f 下面就分享几个特别典型的普通程序员成功转型AI
  • 编译原理第二章习题

    一 填空题 假设G是一个文法 xff0c S是文法的开始符号 xff0c 如果S 61 gt x xff0c 则称x是 句型 文法G产生的 句子 的全体是该文法描述的语言 文法 G S S AB A aA B bBc bc描述的语言 L G
  • 推荐几个免费好用的搜书网站

    小不点搜索 地址 xff1a https www xiaoso net 介绍 xff1a 一个公益的网站不收费 我用来搜索过图书 xff0c 其他资源还没搜索过 xff0c 用起来速度挺快的 2 java1234 地址 http www j
  • 推荐一些好用的APP

    南瓜影视 链接 xff1a https ng33 app channelCode 61 share88 appkey 61 ayo1id amp recommend 61 5708550 没有广告 xff0c 有电视版 xff0c 手机版
  • 虚拟机的初始化设置的磁盘空间太大,进行缩小

    xff08 如果你的磁盘文件是多文件的直接跳到第二步 xff09 1 将但磁盘文件分解为多磁盘文件 在虚拟机安装目录下 xff0c 执行该命令 vmware vdiskmanager exe r 你的虚拟机磁盘文件 vmdk t 1 spa
  • yum包查找网站

    https pkgs org http rpm pbone net index php3
  • swagger3 +srpingsecurity

    引入jar包 参考swagger官网http springfox github io springfox docs current quick start guides span class token operator lt span s