OpenFeign服務調用時攜帶Token:
場景:眾所周知,OpenFigen主要的作用是替我們發送Http請求的,那么在有些場景中,需要在OpenFiegn中攜帶Token到另一個服務去,需要配置一個Fegin的配置類完成此操作
- 第一步創建FeginClient的配置類
package cn.woniu.yyyservice.nacosconfig; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * Created with IntelliJ IDEA. * * @Author: hui * @Date: 2021/12/05/17:33 * @Description: */ @Configuration public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); requestTemplate.header("jwt-Token", request.getHeader("jwt-Token")); } }
- 在@FeginClient注解添加Configuration
package cn.woniu.yyyservice.client; import cn.woniu.yyyservice.nacosconfig.FeignConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.RequestMapping; /** * Created with IntelliJ IDEA. * * @Author: hui * @Date: 2021/12/05/15:49 * @Description: */ @FeignClient(name = "xxx-service", fallback = XxxFallBackServiceClientImpl.class, configuration = FeignConfiguration.class) public interface XxxServiceClient { @RequestMapping("/all-can-do") public String demo7(); @RequestMapping("/") public String index(); }