Pun*_*cky 3 java spring spring-boot
我看到下面的 restTemplate 用于获取 OAuth 令牌。我没有看到任何显式调用来缓存我的应用程序中的令牌。但是,我看到此模板返回了相同的令牌值。OAuth2RestTemplate 是否固有地实现了客户端缓存?如果是这样,它会在令牌过期时显式调用 OAuth2 端点吗?
@Qualifier("oauth")
@Bean
public OAuth2RestTemplate restTemplate(@Qualifier("resourceDetails") ClientCredentialsResourceDetails resourceDetails) {
return new OAuth2RestTemplate(resourceDetails);
}
Run Code Online (Sandbox Code Playgroud)
我在文档中看到了以下内容-
getAccessToken public OAuth2AccessToken getAccessToken() 抛出 UserRedirectRequiredException
如有必要,获取或更新当前上下文的访问令牌。此方法将在执行请求时自动调用(并缓存结果),但也可以作为独立方法调用以预填充令牌。
很明显,令牌缓存在定义资源时创建的上下文(DefaultOAuth2ClientContext 对象)中。但是,令牌是通过调用 getAccessToken() 来管理的。以下是文档关于 getAccessToken() 的说明:
如有必要,获取或更新当前上下文的访问令牌。该方法将在执行请求时自动调用(并且结果被缓存),但也可以作为独立方法调用以 * 预填充令牌。
令牌被缓存,直到它过期,然后它会自动更新。来自 getAccessToken() 的这段代码描述了它:
if (accessToken == null || accessToken.isExpired()) {
try {
accessToken = acquireAccessToken(context);
}
Run Code Online (Sandbox Code Playgroud)
关于缓存机制,默认情况下spring提供了内存缓存
DefaultOAuth2ClientContext
但您可以提供自己的实现
OAuth2ClientContext
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |