@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 Mapheaders; 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); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)