spring securiy feign接口token更换
-
RequestInterceptor 请求过滤器
feign.SynchronousMethodHandler#targetRequest

-
添加过滤器
@ConditionalOnBean({OAuth2ClientContext.class})
public class FeignClientTokenRelayInterceptor extends OAuth2FeignRequestInterceptor {
private static final Logger log = LogManager.getLogger(FeignClientTokenRelayInterceptor.class);
private final OAuth2ClientContext oAuth2ClientContext;
private final AccessTokenContextRelay accessTokenContextRelay;
public FeignClientTokenRelayInterceptor(OAuth2ClientContext oAuth2ClientContext, OAuth2ProtectedResourceDetails resource, AccessTokenContextRelay accessTokenContextRelay) {
super(oAuth2ClientContext, resource);
this.oAuth2ClientContext = oAuth2ClientContext;
this.accessTokenContextRelay = accessTokenContextRelay;
}
public void apply(RequestTemplate template) {
System.out.println(template);
this.accessTokenContextRelay.copyToken();
handleCiticMarketToken(template);
if (this.oAuth2ClientContext != null && this.oAuth2ClientContext.getAccessToken() != null) {
super.apply(template);
}
}
private void handleCiticMarketToken(RequestTemplate template) {
Object userNo = ThreadLocalContext.get("userNo");
Object requestType = ThreadLocalContext.get("requestType");
if ("citicMarket".equals(requestType) && userNo instanceof String) {
String userNoStr = userNo.toString();
if (StringUtil.isEmpty(userNoStr)) {
return;
}
System.out.println(userNo);
String token = RequestHeaderUtil.getToken(userNoStr);
if (StringUtil.isEmpty(token)) {
return;
}
System.out.println(token);
template.header("Authorization", "Bearer " + token);
template.removeHeader("Authorization");
}
}
}
浙公网安备 33010602011771号