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

yizhihongxing

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日

相关文章

  • 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题

    当Spring MVC Controller接收页面传递的中文参数时,可能会出现乱码的问题。为了解决此问题,可以采取以下步骤: 配置过滤器解决POST请求中文乱码问题 在web.xml中添加如下过滤器: <filter> <filter-name>encodingFilter</filter-name> <filte…

    Java 2023年5月20日
    00
  • Java中GUI工具包AWT和Swing用法介绍

    Java中GUI工具包AWT和Swing用法介绍 Java是一种编程语言,它具有丰富的GUI(图形用户界面)编程功能。Java中提供了两个常用的GUI工具包:AWT(注意大小写)和Swing,它们提供了大量的组件和技术,用于创建富有吸引力和交互性的应用程序。 AWT AWT中的组件直接调用操作系统的本地GUI组件,因此,当用户界面更改时,AWT组件将自动更新…

    Java 2023年5月26日
    00
  • 验证注册用户名必须为字母

    验证注册用户名必须为字母需要考虑以下几个方面: 对用户输入的进行验证 在前端和后端分别进行验证 提供用户友好的错误信息 以下是完整攻略: 步骤一:前端验证用户输入 使用JavaScript可以在浏览器端进行用户输入的验证。可以通过正则表达式匹配字符串,判断用户名是否包含除字母以外的其他字符。以下是一个简单的前端示例代码: function isAlphabe…

    Java 2023年6月15日
    00
  • Spring 与 JDK 线程池的简单使用示例详解

    下面是Spring与JDK线程池的简单使用示例详解的攻略。 Spring与JDK线程池的简单使用示例详解 什么是线程池 线程池是一种多线程的解决方案,它的核心思想是在应用程序启动的时候,提前创建若干个线程并放入线程池中,并维护这些线程的生命周期,应用程序需要处理任务的时候,不需要再临时创建新的线程,而是从线程池中获取可用的线程。 JDK线程池的使用 Java…

    Java 2023年5月18日
    00
  • java中实现创建目录与创建文件的操作实例

    以下是Java中创建目录和文件的操作实例: 创建目录 在Java中,可以使用File类的mkdir()方法来创建目录。这个方法用于创建一个目录,但它只会创建最后一级目录,如果上级目录不存在,则会创建失败。 示例1:创建单层目录 import java.io.File; public class CreateDirectory { public static …

    Java 2023年5月20日
    00
  • JSP动态生成验证码存储在session作用范围内

    JSP动态生成验证码存储在Session作用范围内的攻略可以分为以下几个步骤来进行。 步骤1:生成随机的验证码 在JSP页面中通过Java代码生成随机的验证码,一般可以使用Random类或者Math.random()的方法,并将生成的验证码存储到一个String类型的变量中。 步骤2:将验证码存储在Session作用范围内 在生成验证码的同时,将其存储在Se…

    Java 2023年6月15日
    00
  • Java实现ZooKeeper的zNode监控

    当我们使用ZooKeeper作为分布式协调框架时,监视zNode的变化是很常见的任务,因为zNode的变化往往意味着某些与服务相关的状态变化。本文将详细讲解如何使用Java实现ZooKeeper的zNode监视。 步骤一:导入ZooKeeper依赖 首先,在项目的pom.xml文件中添加以下ZooKeeper依赖: <dependency> &l…

    Java 2023年5月19日
    00
  • JAVA编程不能不知道的反射用法总结

    JAVA编程不能不知道的反射用法总结 什么是反射 反射是Java中的一种特性,它允许程序在运行时检查和操作对象的属性、方法和构造函数。在Java中,可以使用java.lang.reflect包中的类实现反射。 反射用法 获取Class对象 在Java中,每个类都有一个唯一的Class对象,它保存了与类有关的信息。可以通过下面的方法获取某个类的Class对象:…

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