springboot WebFilter+@Component urlPatterns 全部拦截

server/2024/11/13 5:33:09/

问题描述
@WebFilter(filterName = “ssoFilter”,urlPatterns = “/*”)配置

@Order中的value越小,优先级越高。
解决方法一:
在springboot启动类上添加
@ServletComponentScan(basePackages = “com.package.path”)

解决方法二:
手动配置bean(推荐这种方式,可以在FilterRegistrationBean里设置Order)不需要@WebFilter注解

java">package com.zhkj.saas.ims.lnterceptor;import com.zhkj.saas.ims.controller.ProxyController;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;/*** @author lvyuanjun* @date 2023/4/26 15:27*/
public class ChannelFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {try {ServletRequest requestWrapper = null;if (request instanceof HttpServletRequest) {HttpServletRequest req = (HttpServletRequest) request;String requestURI = req.getRequestURI();boolean state = ProxyController.REQUEST_URI_DATA_AUTH_LIST.contains(requestURI);if(state){requestWrapper = new RequestParameterWrapper(req);}}if (requestWrapper == null) {chain.doFilter(request, response);} else {chain.doFilter(requestWrapper, response);}} catch (IOException e) {e.printStackTrace();} catch (ServletException e) {e.printStackTrace();}}@Overridepublic void destroy() {}
}
java">@Configuration
public class WebAuthFilterConfig {@Beanpublic FilterRegistrationBean webAuthFilterRegistration() {FilterRegistrationBean registration = new FilterRegistrationBean();registration.setFilter(loginFilter());registration.setName("ChannelFilter");registration.addUrlPatterns("/spu/*");registration.setOrder(0);return registration;}@Beanpublic Filter channelFilter() {return new ChannelFilter();}
}

尝试了如下几种情况:

  1. Filter 实现类 + @WebFilter + @ServletComponentScan:正常urlpattern的Filter
  2. Filter 实现类 + FilterRegistrationBean构造 + @Configuration:正常urlpattern的Filter,并且可以设置Order
  3. 仅仅 Filter实现类 + @Component :会注册一个urlpattern 为 /*的过滤器
  4. 通过1、2、3可以得知,只要在Filter实现类上增加 @Component ,就会导致 1个正常urlpattern的filter+1个拦截/*的filter(由于@Component注解导致)

http://www.ppmy.cn/server/5511.html

相关文章

卷王问卷考试系统/SurveyKing调查系统源码

SurveyKing是一个功能强大的开源调查问卷和考试系统,它能够快速部署并适用于各个行业。 这个系统提供了在线表单设计、数据收集、统计和分析等功能,支持20多种题型,提供多种创建问卷的方式和设置。 项 目 地 址 : runruncode.c…

【C语言】指针详解(五)

目录 1.字符指针 1.1常量字符串 2.指针数组 3.数组指针 1.字符指针 字符指针就是指向字符的指针,字符指针可以存储字符变量的地址。 举例如下: 定义指针变量pa存a的地址,改变*pa的值,a也会随之改变 。 1.1常量字符串 &#x1f…

网站创建的流程是什么

网站的创建过程包括几个主要的步骤,其中涉及到一系列的决策和实践操作。下面我将详细介绍网站创建的流程,帮助读者了解如何创建一个成功的网站。 第一步:确定网站目标和功能 在创建网站之前,你需要明确自己网站的目标和功能。是用…

数据库1~4NF+ BCNF

基础概念 元组:表中的一行即为一个元组,对应存储文件中的一个记录值。数据表中一行数据。 属性:表中的列称为属性,每一列有一个属性名。属性名相当于记录中的数据项或字段值。码:具有唯一性的key。 候选码&#xff1a…

AWS SAP(Certified Solutions Architect- Professional)认证题库详解(一)

很多朋友在做AWS认证的时候拿到题库之后,却不理解正确答案的原理,这里针对每一条答案都给了一个非常详细的解释,同时也会积累丰富的云计算架构的实践经验,保证看得懂,记得住,看完一遍之后就可以去考试了。  问题1 一家公司使用Amazon在单个m4.2xlarge AmazonEC2实例上…

【架构-15】NoSQL数据库

NoSQL(Not Only SQL)数据库是一类非关系型数据库,与传统的关系型数据库(如MySQL、Oracle)相对而言。NoSQL数据库的设计目标是针对大规模数据和高并发访问的需求,具有高可扩展性、高性能和灵活的数据模型。 …

Github 2024-04-20 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目2Python项目2Swift项目2HTML项目1CSS项目1Go项目1C项目1C++项目1Rust项目1编程面试大学:成为软件工程师的全面学习计划 创建周期…

vue3的ref和reactive

ref RefImpl:引用对象,如果想让一个普通变量变成响应式的,就需要把这个变量丢给ref。 修改的时候需要使用name.value进行修改。使用的时候直接使用name字段就行。 补充:const obj{name:’li’}定义的对象是可以修改对象里面的属性…