Oauth客户端凭据AccessToken在哪里存储此令牌并再次访问

问题描述 投票:0回答:1

我正在使用Spring Boot,并且正在使用第三方API accessToken(通过传递clientId和clientSecret)。

public String getAccessToken(){
   return token;
} 

现在,在我所有的服务中,要确保使用第三方API,我肯定需要一个accessToken,因此在每个Service类中,我都在调用getAccessToken()以获取令牌,然后进行实际的其余调用。

通过以上操作,其工作正常。但是我某种程度上感觉像在所有服务类中到处都是重复代码,即getAccessToken()。避免重复的最佳方法是什么?最重要的是,我永远都不要在任何服务类中都获得inValid accessToken]

spring spring-boot oauth-2.0 authorization saml
1个回答
0
投票

当您使用第三方API时,必须有一个通用代码。

如果使用RestTemplate

添加ClientHttpRequestInterceptor

 RestTemplate template = new RestTemplateBuilder()
                .additionalInterceptors((httpRequest, bytes, clientHttpRequestExecution) -> {
                    httpRequest.getHeaders().add("Authorization", getAccessToken());
                    return clientHttpRequestExecution.execute(httpRequest, bytes);
                })
                .build();

然后是>>

@Autowired
private RestTemplate restTemplate

public yourResp yourFunc(String param){
  ... = restTemplate.getFor...

}

© www.soinside.com 2019 - 2024. All rights reserved.