springboot 拦截器 统一处理head参数工具类

springboot 拦截器 统一处理head参数工具类,第1张

springboot 拦截器 统一处理head参数工具
@Configuration
public class WebHeadFilter {

    @Bean
    public FilterRegistrationBean modifyParametersFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new MyHeadFilter());
        registration.addUrlPatterns("
    class MyHeadFilter extends oncePerRequestFilter {
        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
            // tenantId信息处理
            HeadRequestWrapper headRequestWrapper = new HeadRequestWrapper(request);
            if (StringUtils.isBlank(headRequestWrapper.getHeader("tenantId"))) {
                headRequestWrapper.addHead("tenantId", DEFAULT_TENANT_ID);
            }
            TenantInfoUtil.set(headRequestWrapper.getHeader("tenantId"));
            // finish
            filterChain.doFilter(headRequestWrapper, response);
        }
    }

    
    class HeadRequestWrapper extends HttpServletRequestWrapper {
        private Map headers;

        HeadRequestWrapper(HttpServletRequest request) {
            super(request);
            this.headers = new HashMap<>();
        }

        @Override
        public String getHeader(String name) {
            String headervalue = super.getHeader(name);
            if (headers.containsKey(name)) {
                headervalue = headers.get(name);
            }
            return headervalue;
        }

        @Override
        public Enumeration getHeaderNames() {
            List values = Collections.list(super.getHeaderNames());
            for (String value : headers.keySet()) {
                values.add(value);
            }
            return Collections.enumeration(values);
        }

        @Override
        public Enumeration getHeaders(String name) {
            List values = Collections.list(super.getHeaders(name));
            if (headers.containsKey(name)) {
                values = Arrays.asList(headers.get(name));
            }
            return Collections.enumeration(values);
        }

        public void addHead(String name, String value) {
            this.headers.put(name, value);
        }
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5707774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存