package jnpf; import feign.Logger; import feign.RequestInterceptor; import feign.RequestTemplate; import jnpf.base.UserInfo; import jnpf.constant.GlobalConst; import jnpf.consts.AuthConsts; import jnpf.properties.SecurityProperties; import jnpf.util.Constants; import jnpf.util.ServletUtil; import jnpf.util.UserProvider; import jnpf.utils.FeignHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import jakarta.servlet.http.HttpServletRequest; import java.util.Map; /** * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司 * @date 2021/3/16 10:51 */ @Configuration public class FeignConfig implements RequestInterceptor { @Autowired private SecurityProperties securityProperties; @Override public void apply(RequestTemplate template) { //添加token Map headers = FeignHolder.get(); String token = null; if(headers != null){ //通过FeignHolder调用 template.header("User-Agent", headers.get("user-agent")); template.header(Constants.AUTHORIZATION, headers.get(Constants.AUTHORIZATION)); template.header("X-Real-IP", headers.get("x-real-ip")); template.header("X-Forwarded-For", headers.get("x-forwarded-for")); template.header("App-Code", headers.get("App-Code")); template.header("Jnpf-Origin", headers.get("Jnpf-Origin")); /*headers.entrySet().forEach((k)->{ template.header(k.getKey(), k.getValue()); });*/ }else { //先获取当前本地缓存中UserInfo的TOKEN //适配临时切换用户 UserInfo userInfo = UserProvider.getLocalLoginUser(); if(userInfo != null && userInfo.getToken() != null){ token = userInfo.getToken(); template.header(Constants.AUTHORIZATION, token); } //Web环境直接调用 HttpServletRequest request = ServletUtil.getRequest(); if (request != null) { if(token == null) { template.header(Constants.AUTHORIZATION, request.getHeader(Constants.AUTHORIZATION)); } template.header("User-Agent", request.getHeader("User-Agent")); template.header("X-Real-IP", request.getHeader("X-Real-IP")); template.header("X-Forwarded-For", request.getHeader("X-Forwarded-For")); template.header("App-Code", request.getHeader("App-Code")); template.header("Jnpf-Origin", request.getHeader("Jnpf-Origin")); } } if(securityProperties.isEnableInnerAuth() || securityProperties.isEnablePreAuth()) { template.header(AuthConsts.INNER_TOKEN_KEY, UserProvider.getInnerAuthToken()); } template.header(GlobalConst.HEADER_HOST, ServletUtil.getRequestHost()); } /** * Openfeign调用日志 * NONE,BASIC,HEADERS,FULL共有四种等级 * @return */ @Bean Logger.Level feignLoggerLeave(){ return Logger.Level.FULL; } }