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

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

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

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

    @Configuration
    public class BeanConfiguration {
    
        @Autowired
        private TokenInterceptor tokenInterceptor;
    
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate() {
            RestTemplate restTemplate = new RestTemplate();
            restTemplate.setInterceptors(Collections.singletonList(tokenInterceptor));
            return restTemplate;
        }
    }

更多...

加载中...