Spring Boot security 默认拦截静态资源的解决方法

Spring Boot Security默认会拦截所有请求,包括静态资源文件。这样会导致我们在访问静态资源时收到403(Forbidden)错误的响应。下面将介绍解决这个问题的方法。

第一种解决方法

第一种解决方法是在配置类上添加注解,忽略静态资源的拦截。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/css/**", "/js/**");
    }
}

上述配置类中,使用了WebSecurity类的ignoring()方法来忽略指定的静态资源。在antMatchers()方法中,添加了需要忽略的静态资源路径。在上面的示例中,我们忽略了/css/**/js/**路径下的所有静态资源。

第二种解决方法

第二种解决方法是实现WebMvcConfigurer接口并覆盖addResourceHandlers()方法。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/css/**", "/js/**").addResourceLocations("classpath:/static/css/", "classpath:/static/js/");
    }
}

上述配置类中,我们实现了WebMvcConfigurer接口并覆盖了addResourceHandlers()方法。在addResourceHandlers()方法中,使用ResourceHandlerRegistry类的addResourceHandler()方法来指定要处理的静态资源路径,使用addResourceLocations()方法来指定静态资源文件所在的目录。

在上面的示例中,我们添加了/css/**/js/**路径下的所有静态资源,并指定了它们所在的文件夹为classpath:/static/css/classpath:/static/js/

示例说明

示例1

假设我们的Web应用中包含了以下目录结构:

src/main/resources/static/css/style.css
src/main/resources/static/js/app.js
src/main/resources/templates/home.html

在没有采用上述两种方法时,我们访问home.html页面时,页面中引用的静态资源style.cssapp.js会得到403(Forbidden)错误的响应。

采用第一种解决方法后,style.cssapp.js文件会被忽略,成功加载。采用第二种解决方法后,同样可以成功加载。

示例2

假设我们的Web应用中只包含了如下结构的目录:

src/main/resources/static/js/app.js

在没有采用上述两种方法时,我们访问app.js文件时依然会收到403(Forbidden)错误的响应。

采用第一种解决方法后,app.js文件被忽略,可以成功加载。采用第二种解决方法后,同样可以成功加载。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot security 默认拦截静态资源的解决方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Java超详细讲解接口的实现与用法

    Java超详细讲解接口的实现与用法 什么是接口 在Java中,接口是一个与类有相似结构的抽象数据类型。与类不同的是,它只定义一组规范,而不实现这些规范。接口中定义的方法没有具体的实现逻辑,只是给出了方法的签名与返回值类型。 接口的定义与实现 定义接口可以使用interface关键字,接口中可以定义方法和属性。接口中的方法是公共的(public),没有方法体(…

    Java 2023年5月18日
    00
  • Hibernate 基本操作、懒加载以及缓存

    前言 上一篇咱们介绍了 Hibernate 以及写了一个 Hibernate 的工具类,快速入门体验了一波 Hibernate 的使用,我们只需通过 Session 对象就能实现数据库的操作了。 现在,这篇介绍使用 Hibernate 进行基本的 CRUD、懒加载以及缓存的知识。 提示:如果你还没看上一篇,那么建议你看完上一篇再来看这篇。 上一篇:一文快速入…

    Java 2023年5月11日
    00
  • java中的FileInputStream三种read()函数用法

    针对“java中的FileInputStream三种read()函数用法”,我整理了以下攻略: 一、FileInputStream简介 java.io包中的FileInputStream是一个类,它用于从文件系统中的文件获取输入字节流。它继承了InputStream类。在使用FileInputStream时,一个文件必须存在,并且应该以字节的形式存在。Fil…

    Java 2023年5月26日
    00
  • SpringBoot使用JDBC获取相关的数据方法

    下面是SpringBoot使用JDBC获取相关数据的操作攻略: 准备工作 首先,我们需要在pom.xml文件中添加JDBC依赖,可以添加MySQL、Oracle等依赖,这里以MySQL为例,pom.xml文件中添加以下依赖: <dependency> <groupId>mysql</groupId> <artifac…

    Java 2023年5月20日
    00
  • Java开发神器Lombok使用详解

    Java开发神器Lombok使用详解 简介 Lombok是一个Java库,它可以自动插入编辑器和Build工具中,通过注解的方式来简化Java类的开发。Lombok有许多有用的注解,使得Java开发变得更加简洁高效。 安装和配置 Lombok可以简单地通过在项目中添加Maven或Gradle依赖来安装。 在Maven中加入依赖: xml <depend…

    Java 2023年5月26日
    00
  • 深入理解Java8双冒号::的使用

    下面是“深入理解Java8双冒号::的使用”的完整攻略: 什么是双冒号:: 双冒号是Java 8中新增的一种语法,用于引用类的方法、构造函数或实例方法。它的形式类似于Lambda表达式,但又不完全一样。 双冒号的语法形式如下: ClassName::methodName 其中, ClassName 是类的名称,methodName 是类中的方法名。这种语法形…

    Java 2023年5月26日
    00
  • Java main 方法面试题的详细整理

    Java main 方法面试题的详细整理 问题描述 Java中的 main 方法是程序的入口,也是Java面试中最常见的问题之一。以下是一些常见的关于Java main 方法的面试题: main 方法的签名是什么? main 方法的返回类型是什么? main 方法的参数是什么? 解答 1. main 方法的签名是什么? main 方法的签名如下: publi…

    Java 2023年5月26日
    00
  • SpringBoot使用Spring-Data-Jpa实现CRUD操作

    下面我来为你讲解如何在SpringBoot中使用Spring-Data-Jpa实现CRUD操作。 一、什么是Spring-Data-Jpa Spring-Data-JPA是Spring Data家族中的一个模块,它基于JPA规范,提供了对JPA的支持。它简化了数据访问层的开发,提升了数据访问的效率。通过Spring-Data-Jpa可以轻松实现对关系型数据库…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部