@Documented @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Import({EnableUserInfoTransmitterAutoConfiguration.class}) public @interface EnableUserInfoTransmitter { }
public class EnableUserInfoTransmitterAutoConfiguration { public EnableUserInfoTransmitterAutoConfiguration() { } @Bean public TransmitUserInfoFeighClientIntercepter transmitUserInfo2FeighHttpHeader() { return new TransmitUserInfoFeighClientIntercepter(); } @Bean public TransmitUserInfoFilter transmitUserInfoFromHttpHeader() { return new TransmitUserInfoFilter(); } }
从浏览器访问/page先进入
public class TransmitUserInfoFilter implements Filter {
然后进入controller servie
public PageModel<XXXX> page(Integer number, Integer size, String sortField, List<QueryCriteriaVo> criteriaVos) {
在service中进入feign
List<SysTenantDto> data = sysTenantFeignService.listByIds(tenantIds).getData();
@Configuration public class FeignConfiguration implements RequestInterceptor { public FeignConfiguration() { } public void apply(RequestTemplate template) { ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while(headerNames.hasMoreElements()) { String name = (String)headerNames.nextElement(); String values = request.getHeader(name); if (!name.equalsIgnoreCase("content-length")) { template.header(name, new String[]{values}); } } } } } }
public class TransmitUserInfoFeighClientIntercepter implements RequestInterceptor { private static final Logger log = LoggerFactory.getLogger(TransmitUserInfoFeighClientIntercepter.class); public TransmitUserInfoFeighClientIntercepter() { } public void apply(RequestTemplate requestTemplate) { SysUserDto user = SysUserInfoContext.getUser(); if (user != null) { requestTemplate.header("Authorization", new String[]{"Bearer " + user.getToken()}); String userJson = JSON.toJSONString(user); try { userJson = URLEncoder.encode(userJson, "UTF-8"); } catch (Exception var5) { } requestTemplate.header("user_info", new String[]{userJson}); } } }