package com.ruoyi.common.security.feign; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; import org.springframework.stereotype.Component; import feign.RequestInterceptor; import feign.RequestTemplate; /** * feign 请求拦截器 * * @author ruoyi */ @Component public class OAuth2FeignRequestInterceptor implements RequestInterceptor { private final String AUTHORIZATION_HEADER = "Authorization"; private final String BEARER_TOKEN_TYPE = "Bearer"; @Override public void apply(RequestTemplate requestTemplate) { SecurityContext securityContext = SecurityContextHolder.getContext(); Authentication authentication = securityContext.getAuthentication(); if (authentication != null && authentication.getDetails() instanceof OAuth2AuthenticationDetails) { OAuth2AuthenticationDetails dateils = (OAuth2AuthenticationDetails) authentication.getDetails(); requestTemplate.header(AUTHORIZATION_HEADER, String.format("%s %s", BEARER_TOKEN_TYPE, dateils.getTokenValue())); } } }