Spring boot DefaultOAuth2AuthorizedClientManager和AuthorizedClientService OAuth2AuthorizedClientManager之间有什么区别
看看这本书,我找到的唯一建议是 DefaultOAuth2AuthorizedClientManager设计用于HttpServletRequest的上下文中。在HttpServletRequest上下文之外操作时,请改用AuthorizedClientServiceOAuth2AuthorizedClientManagerSpring boot DefaultOAuth2AuthorizedClientManager和AuthorizedClientService OAuth2AuthorizedClientManager之间有什么区别,spring-boot,spring-security,spring-security-oauth2,Spring Boot,Spring Security,Spring Security Oauth2,看看这本书,我找到的唯一建议是 DefaultOAuth2AuthorizedClientManager设计用于HttpServletRequest的上下文中。在HttpServletRequest上下文之外操作时,请改用AuthorizedClientServiceOAuth2AuthorizedClientManager 我可以在servlet请求范围之外使用DefaultOAuth2AuthorizedClientManager测试WebClient调用是否挂起,但是,如果在servlet
我可以在servlet请求范围之外使用
DefaultOAuth2AuthorizedClientManager
测试WebClient
调用是否挂起,但是,如果在servlet请求的上下文中使用AuthorizedClientServiceOAuth2AuthorizedClientManager
,则不会发生任何奇怪的情况。那么,它们之间有什么区别呢?正如您从文档中注意到的,主要区别在于它们将在哪里使用。从外部看,这可能不太明显,但在框架内部会更明显。但也许解释它们为何不同的一个更简单的方法是看看它们封装了什么
使用一个DefaultOAuth2AuthorizedClientManager
OAuth2AuthorizedClientStore
- 其方法签名为
loadAuthorizedClient(字符串clientRegistrationId、身份验证主体、HttpServletRequest请求)
- 其方法签名为
使用authorizedclientserviceouth2authorizedclientmanager
OAuth2AuthorizedClientService
- 其方法签名为
loadAuthorizedClient(字符串clientRegistrationId,字符串principalName)
- 其方法签名为
DefaultOAuth2AuthorizedClient Manager
就是我想你会称之为“基于请求的”,而AuthorizedClient服务OAuth2AuthorizedClient Manager则是“基于服务的”,这实际上意味着其他一切
API文档将在以下方面有所帮助:
更新:
将请求作为参数的附加值是什么
作为一个接口,声明loadAuthorizedClient
方法接受请求作为参数意味着任何未来的实现都可以使用该请求来影响其决策。默认实现(DefaultOAuth2AuthorizedClientManager
)实现了这一点,因为HttpSessionAuth2AuthorizedClientRespository
利用请求访问会话。您从文档中注意到的主要区别是它们的使用位置。从外部看,这可能不太明显,但在框架内部会更明显。但也许解释它们为何不同的一个更简单的方法是看看它们封装了什么
DefaultOAuth2AuthorizedClientManager
使用一个OAuth2AuthorizedClientStore
- 其方法签名为
loadAuthorizedClient(字符串clientRegistrationId、身份验证主体、HttpServletRequest请求)
authorizedclientserviceouth2authorizedclientmanager
使用OAuth2AuthorizedClientService
- 其方法签名为
loadAuthorizedClient(字符串clientRegistrationId,字符串principalName)
因此,DefaultOAuth2AuthorizedClient Manager
就是我想你会称之为“基于请求的”,而AuthorizedClient服务OAuth2AuthorizedClient Manager则是“基于服务的”,这实际上意味着其他一切
API文档将在以下方面有所帮助:
更新:
将请求作为参数的附加值是什么
作为一个接口,声明loadAuthorizedClient
方法接受请求作为参数意味着任何未来的实现都可以使用该请求来影响其决策。默认实现(DefaultOAuth2AuthorizedClientManager
)实现了这一点,因为HttpSessionAuth2AuthorizedClientRespository
利用请求访问会话。感谢Steve的解释,但我仍然不确定我是否得到了区别。将请求作为参数的附加值是什么?作为一个接口,声明loadAuthorizedClient
方法接受请求作为参数意味着任何未来的实现都可以使用请求来影响其决策。默认实现是这样做的,因为HttpSessionAuth2AuthorizedClientRepository
利用请求访问会话。感谢Steve的解释,但我仍然不确定我是否得到了区别。将请求作为参数的附加值是什么?作为一个接口,声明loadAuthorizedClient
方法接受请求作为参数意味着任何未来的实现都可以使用请求来影响其决策。默认实现是这样做的,因为HttpSessionAuth2AuthorizedClient存储库利用请求访问会话。