目的:修改某些接口请求头相关参数,调用第三方服务
优点:配置简单,适合接口配置数量较少的情况,不影响其他接口。
缺点:若接口配置数量多且前缀不一致,配置麻烦易出错。
1、设置过滤器配置
import 包路径.AuthHeaderIgnoreFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean modifyParametersFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new AuthHeaderIgnoreFilter());
registration.addUrlPatterns(
// 接口地址
"/XXX/xxx/*",
"/XXX/xxx/*");
registration.setName("authHeaderIgnoreFilter");
registration.setOrder(1);
return registration;
}
}
2、 配置具体业务
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.IOException;
@WebFilter
public class AuthHeaderIgnoreFilter implements Filter {
// @Override
// public void init(FilterConfig filterConfig) throws ServletException { }
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpServletRequestWrapper requestWrapper = new
HttpServletRequestWrapper((HttpServletRequest) request) {
/**
* 此处为具体业务
* 示例:若请求头为Authorization或token,则置为123,否则不变
* @param name
* @return
*/
@Override
public String getHeader(String name) {
String superHeader = super.getHeader(name);
if("Authorization".equals(name) || "token".equals(name)){
return "123";
}
return superHeader;
}
};
chain.doFilter(requestWrapper,response);
}
@Override
public void destroy() { }
}