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日

相关文章

  • 关于log4j2的异步日志输出方式

    很高兴为您讲解关于log4j2的异步日志输出方式的攻略。Log4j2是一个广泛使用的日志框架,可以帮助我们记录应用程序运行期间的各种信息。由于日志信息通常很多,因此异步日志输出非常有必要,以提高日志输出的性能。下面是详细攻略: 异步日志输出方式 Log4j2的异步日志输出方式包括以下几个步骤: 创建异步日志Appender 指定日志输出到异步Appender…

    Java 2023年5月20日
    00
  • Java的MyBatis框架项目搭建与hellow world示例

    下面是关于Java的MyBatis框架项目搭建与hellow world示例的完整攻略: 1. MyBatis框架项目搭建 1.1 安装MyBatis 首先你需要安装MyBatis的Jar包以及相关依赖,你可以在Maven中央仓库中查找MyBatis的版本并下载对应版本的Jar包。 1.2 配置MyBatis 在项目中添加配置文件mybatis-config…

    Java 2023年5月20日
    00
  • SpringBoot如何返回页面的实现方法

    实现页面跳转主要分为两种方式: 1.使用@Controller注解的方法,返回HTML页面 在SpringBoot中,使用@Controller注解可以指示一个特定的类是控制器,它可以响应特定的请求,同时返回HTML页面。 实现步骤如下: 第一步:在pom.xml中添加thymeleaf依赖: <dependency> <groupId&g…

    Java 2023年6月15日
    00
  • java 使用readLine() 乱码的解决

    Java中的readLine()方法是读取文件或者从标准输入流中读取数据的常用方法之一,在读取中文字符时有可能出现乱码的问题,下面讲解如何使用Java来解决readLine()乱码的问题。 问题描述 在Java中使用readLine()方法读取文件或者从标准输入流中读取数据时,如果输入的数据中含有中文字符,使用String类型读取的时候常常出现乱码的问题。 …

    Java 2023年5月20日
    00
  • SpringBoot+MySQL+Jpa实现对数据库的增删改查和分页详解

    前置知识: 在学习本篇攻略之前,需要熟悉如下知识: SpringBoot: 一款基于Spring框架的快速开发脚手架工具,可以快速创建Spring应用 MySQL: 一款流行的关系型数据库 JPA: Java持久化API,是一套标准的ORM框架 步骤: 1.配置MySQL数据库 首先需要进行mysql数据库的安装和配置。这里不再赘述,建议在官网上进行下载和安…

    Java 2023年5月20日
    00
  • SpringMVC 拦截器的使用示例

    下面我来为你详细讲解一下 “SpringMVC 拦截器的使用示例” 的完整攻略。 一、什么是 SpringMVC 拦截器? SpringMVC 拦截器(Interceptor)是 SpringMVC 框架提供的一种强大的工具,它可以在 SpringMVC 框架的业务逻辑之前或之后实现对请求的拦截、处理和修改等操作。与过滤器(Filter)相比,拦截器更为灵活…

    Java 2023年5月16日
    00
  • Java数组(Array)最全汇总(上篇)

    Java数组(Array)最全汇总(上篇)攻略 为什么要学习Java数组? Java数组是Java编程中基本的数据结构之一。在Java中,我们使用数组来存储和操作一组相同类型的数据。使用数组可以更高效地处理大量的数据,提高程序的性能。 Java数组的基本概念 Java数组是一个包含相同数据类型的数据结构。在Java中,我们可以使用以下语法定义一个数组: da…

    Java 2023年5月26日
    00
  • spring-security关闭登录框的实现示例

    要实现spring-security关闭登录框的功能,有两个方法可以选择: 方法一:使用JavaScript 使用JavaScript实现关闭登录框的功能需要在登录页面添加一个关闭按钮,并使用JavaScript代码监听点击事件,在用户点击按钮时关闭登录框。 以下是示例代码: <!DOCTYPE html> <html lang=&quot…

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