Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot DefaultOAuth2AuthorizedClientManager和AuthorizedClientService OAuth2AuthorizedClientManager之间有什么区别_Spring Boot_Spring Security_Spring Security Oauth2 - Fatal编程技术网

Spring boot DefaultOAuth2AuthorizedClientManager和AuthorizedClientService OAuth2AuthorizedClientManager之间有什么区别

Spring 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

看看这本书,我找到的唯一建议是

DefaultOAuth2AuthorizedClientManager设计用于HttpServletRequest的上下文中。在HttpServletRequest上下文之外操作时,请改用AuthorizedClientServiceOAuth2AuthorizedClientManager


我可以在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存储库利用请求访问会话。