如果项目中用的 RestTemplate 来调用服务提供的接口,可以利用 RestTemplate 的拦截器来传递 Token,代码如下所示。

    1. @Component
    2. public class TokenInterceptor implements ClientHttpRequestInterceptor {
    3. @Override
    4. public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
    5. throws IOException {
    6. System.err.println("进入RestTemplate拦截器");
    7. HttpHeaders headers = request.getHeaders();
    8. headers.add("Authorization", System.getProperty("fangjia.auth.token"));
    9. return execution.execute(request, body);
    10. }
    11. }

    将拦截器注入 RestTemplate,代码如下所示。

    1. @Configuration
    2. public class BeanConfiguration {
    3. @Autowired
    4. private TokenInterceptor tokenInterceptor;
    5. @Bean
    6. @LoadBalanced
    7. public RestTemplate getRestTemplate() {
    8. RestTemplate restTemplate = new RestTemplate();
    9. restTemplate.setInterceptors(Collections.singletonList(tokenInterceptor));
    10. return restTemplate;
    11. }
    12. }