对比新文件 |
| | |
| | | package com.iailab.module.ansteel.config; |
| | | |
| | | import com.iailab.module.ansteel.util.token.IailabClient; |
| | | import feign.RequestInterceptor; |
| | | import feign.RequestTemplate; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | |
| | | @Configuration |
| | | public class FeignTokenInterceptor implements RequestInterceptor { |
| | | |
| | | @Autowired |
| | | private IailabClient iailabClient; |
| | | |
| | | @Override |
| | | public void apply(RequestTemplate requestTemplate) { |
| | | // 从当前请求上下文中获取Token |
| | | String token = getTokenFromCurrentRequest(); |
| | | |
| | | if (token == null) { |
| | | // 如果没有获取到Token,从system-server中获取token |
| | | token = iailabClient.getToken(); |
| | | if (token!= null) { |
| | | requestTemplate.header(HttpHeaders.AUTHORIZATION, token); |
| | | } |
| | | Long tenantId = iailabClient.getTenantId(); |
| | | if (tenantId != null) { |
| | | requestTemplate.header("tenant-id", String.valueOf(tenantId)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private String getTokenFromCurrentRequest() { |
| | | ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
| | | if (attributes!= null) { |
| | | return attributes.getRequest().getHeader(HttpHeaders.AUTHORIZATION); |
| | | } |
| | | return null; |
| | | } |
| | | } |