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(); }