| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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<String, String> 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;
- }
- }
|