• Springboot通过过滤器实现对请求头的修改


    package com.example.demo.filter;
    
    import org.springframework.util.StringUtils;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    
    /**
    * @Description: 滤器实现对请求头的修改
    * @Author: wanghui
    */
    @WebFilter
    public class AuthHeaderSettingFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            Filter.super.init(filterConfig);
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) servletRequest;
            HeaderMapRequestWrapper headerMapRequestWrapper = new HeaderMapRequestWrapper(req);
            String token = req.getHeader("token");
            if(!StringUtils.isEmpty(token)){
                headerMapRequestWrapper.addHeader("token",token);
            }
        }
    
        @Override
        public void destroy() {
            Filter.super.destroy();
        }
    }
    

      

    package com.example.demo.filter;
    
    import org.springframework.util.StringUtils;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
    * @Description: 重写getHeader
    * @Author: wanghui
    */
    public class HeaderMapRequestWrapper extends HttpServletRequestWrapper {
    
        private Map headerMap = new HashMap();
    
        public HeaderMapRequestWrapper(HttpServletRequest request) {
            super(request);
        }
    
        public void addHeader(String name,String value){
            headerMap.put(name,value);
        }
    
        @Override
        public String getHeader(String name){
            String headerValue = super.getHeader(name);
            String value = (String) this.headerMap.get(name);
            if(!StringUtils.isEmpty(value)){
                return value;
            }
            return headerValue;
        }
    
    }
    

      

  • 相关阅读:
    20200601:百万级int数据量的一个array求和。
    20200602:千万级数据量的list找一个数据。
    20200531:假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如何将它们全部找出来?
    20200530:主从数据库不一致如何解决?
    [USACO06DEC]Milk Patterns G
    [HAOI2016]找相同字符
    [AHOI2013]差异
    [SCOI2012]喵星球上的点名
    [APIO2014]回文串
    [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/wangdahui/p/15103166.html
Copyright © 2020-2023  润新知