spring Security配置拦截规则小结

 更新时间:2025年09月09日 09:58:59   作者:bug别找我  
本文介绍了使用Spring Security解决后台管理系统在访问静态资源如图片时需要登录验证的问题,通过配置拦截规则,将静态资源路径添加到白名单,感兴趣的可以了解一下

问题描述

使用spring Security实现后台管理系统登录验证加拦截,访问图片即静态资源时响应需要登录验证,分析问题得出结论未配置security的拦截规则,没有对静态资源进行登录放行

解决方案:

配置spring Security拦截规则,将访问路径添加进入白名单中,比如博主将resources下files下的图片设置白名单,规则就是"/files/**",以下就是博主的配置

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

	protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests()
			.antMatchers("/files/**").permitAll()// 配置拦截规则
			.anyRequest().authenticated();
	}
 }

有关spring security的配置器相关规则

http.authorizeRequests().antMatchers("/api/**").denyAll();    //拒绝api路径下所有的访问

http.authorizeRequests().antMatchers("/api/**").authenticated();    //api路径下访问需认证通过

http.authorizeRequests().antMatchers("/api/**").permitAll();    //api路径下无条件允许访问

端点保护配置

了解到这部分的知识是因为在做OAuth2认证的时候,我发现项目中的安全配置已经开放所有请求(即/**请求不进行拦截),但是当我访问/oauth/token的时候竟然提示401,百思不得其解。最后发现原来在Spring Security中预制了一些默认断点保护策略。具体配置是在AuthorizationServerSecurityConfiguration

过滤规则踩到的坑

.requestMatchers().antMatchers("/test/**").and()
.authorizeRequests().antMatchers("/test/authenticated").authenticated()
.anyRequest().permitAll().and()

通过匹配规则我们可以知道这部分配置的意思是针对/test/**的请求将使用安全配置,/test/authenticated是需要认证的,匹配/test/**且不是/test/authenticated的请求是不需要认证的。但是在实际项目中却遇到了一个坑,就是我访问/test/**的任何请求都是需要认证的,跟了源码发现是使用错误,具体原因是因为我在继承WebSecurityConfigurerAdapter重写configure(HttpSecurity http)方法的最后多写了一行代码

super.configure(http);

我在最后又去调用了WebSecurityConfigurerAdapterconfigure(HttpSecurity http)方法

protected void configure(HttpSecurity http) throws Exception {
   logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
   http
      .authorizeRequests().anyRequest().authenticated().and()
      .formLogin().and()
      .httpBasic();
}

这个是WebSecurityConfigurerAdapter.configure方法的源码,它默认会对所有请求进行过滤。有兴趣的同学可以跟踪源码会发现Spring SecurityURL拦截规则最后是存放在Map中,即在super的配置会覆盖掉自定义配置导致自定义配置失效,写的比较简洁可能不是很好理解。

到此这篇关于spring Security配置拦截规则小结的文章就介绍到这了,更多相关spring Security 拦截规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java后端SSM框架图片上传功能实现方法解析

    Java后端SSM框架图片上传功能实现方法解析

    这篇文章主要介绍了Java后端SSM框架图片上传功能实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Springboot+QueryDsl实现融合数据查询

    Springboot+QueryDsl实现融合数据查询

    这篇文章主要将介绍的是 Springboot 使用 QueryDsl 实现融合数据查询,文中有详细的代码讲解,对 SpringBoot Querydsl 查询操作感兴趣的朋友一起看看吧
    2023-08-08
  • spring controller层引用service报空指针异常nullpointExceptio问题

    spring controller层引用service报空指针异常nullpointExceptio问题

    这篇文章主要介绍了spring controller层引用service报空指针异常nullpointExceptio问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • windows11下jdk同时安装多个版本并自由切换全网最详细教程

    windows11下jdk同时安装多个版本并自由切换全网最详细教程

    一台电脑可以同时安装多个版本jdk,建议两个,最多不超三个,安装多个JDK版本可能会占用较多的磁盘空间,这篇文章主要介绍了windows11下jdk同时安装多个版本并自由切换的相关资料,需要的朋友可以参考下
    2025-11-11
  • Linux Ubuntu系统下配置JDK环境、MySQL环境全过程

    Linux Ubuntu系统下配置JDK环境、MySQL环境全过程

    众所周知Ubuntu是一种基于Linux的操作系统,它提供了一个稳定、安全和易于使用的环境,下面这篇文章主要给大家介绍了关于Linux Ubuntu系统下配置JDK环境、MySQL环境的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • springboot中的Application.properties常用配置

    springboot中的Application.properties常用配置

    这篇文章主要介绍了springboot中的Application.properties常用配置,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • SpringBoot调用SOAP接口全流程(含多服务配置)

    SpringBoot调用SOAP接口全流程(含多服务配置)

    本文主要介绍了SpringBoot调用SOAP接口全流程(含多服务配置),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • kafka自定义分区器使用详解

    kafka自定义分区器使用详解

    本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含"cuihaida"的数据发送到0号分区,否则发送到1号分区,在生产者配置中添加分区器参数即可使用
    2025-11-11
  • SpringBoot项目整合mybatis的方法步骤与实例

    SpringBoot项目整合mybatis的方法步骤与实例

    今天小编就为大家分享一篇关于SpringBoot项目整合mybatis的方法步骤与实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • java处理按钮点击事件的方法

    java处理按钮点击事件的方法

    下面小编就为大家带来一篇java处理按钮点击事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论