From 49f63b92ac742006a843548cf44d07ef0c309677 Mon Sep 17 00:00:00 2001 From: EightMonth Date: Wed, 10 Jul 2024 16:01:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BF=E9=97=AE=E4=BB=AA?= =?UTF-8?q?=E8=A1=A8=E7=9B=98401=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/security/CopyTokenFilter.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/CopyTokenFilter.java diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/CopyTokenFilter.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/CopyTokenFilter.java new file mode 100644 index 000000000..96471738b --- /dev/null +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/CopyTokenFilter.java @@ -0,0 +1,36 @@ +package org.jeecg.config.security; + +import io.undertow.servlet.spec.HttpServletRequestImpl; +import io.undertow.util.HttpString; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +/** + * 复制仪盘表请求query体携带的token + * @author eightmonth + * @date 2024/7/3 14:04 + */ +@Component +@Order(value = Integer.MIN_VALUE) +public class CopyTokenFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + // 以下为undertow定制代码,如切换其它servlet容器,需要同步更换 + HttpServletRequestImpl undertowRequest = (HttpServletRequestImpl) request; + String bearerToken = request.getParameter("token"); + if (StringUtils.hasText(bearerToken)) { + undertowRequest.getExchange().getRequestHeaders().add(new HttpString("Authorization"), "bearer " + bearerToken); + } + filterChain.doFilter(undertowRequest, response); + } + + +}