RestTemplate调用前统一申请Token传递到调用的服务中

如果项目中用的 RestTemplate 来调用服务提供的接口,可以利用 RestTemplate 的拦截器来传递 Token,代码如下所示。
  1. @Component
  2. public class TokenInterceptor implements ClientHttpRequestInterceptor {
  3.  
  4. @Override
  5. public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
  6. throws IOException {
  7. System.err.println("进入RestTemplate拦截器");
  8. HttpHeaders headers = request.getHeaders();
  9. headers.add("Authorization", System.getProperty("fangjia.auth.token"));
  10. return execution.execute(request, body);
  11. }
  12. }
将拦截器注入 RestTemplate,代码如下所示。
  1. @Configuration
  2. public class BeanConfiguration {
  3.  
  4. @Autowired
  5. private TokenInterceptor tokenInterceptor;
  6.  
  7. @Bean
  8. @LoadBalanced
  9. public RestTemplate getRestTemplate() {
  10. RestTemplate restTemplate = new RestTemplate();
  11. restTemplate.setInterceptors(Collections.singletonList(tokenInterceptor));
  12. return restTemplate;
  13. }
  14. }