在服务 class 方法中访问 Oauth 客户端和委托人
Accessing Oauth client and Principal inside the service class method
我正在使用 spring-boot-starter-oauth2-resource-server
依赖项实现资源服务器。我指的是下面的代码,在 Controller
方法中,我们注入了依赖项,Spring 将使用反射自动注入 auth-client 和主体。
如果我想在服务 class 中定义的方法中访问这些对象怎么办?在服务 class 中调用方法时,我不想将这些值作为参数传递。请让我知道如何在服务 class.
中访问这些对象
@RequestMapping("/oauthinfo")
@ResponseBody
public String oauthUserInfo(@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient,
@AuthenticationPrincipal OAuth2User oauth2User) {
return
"User Name: " + oauth2User.getName() + "<br/>" +
"User Authorities: " + oauth2User.getAuthorities() + "<br/>" +
"Client Name: " + authorizedClient.getClientRegistration().getClientName() + "<br/>" +
this.prettyPrintAttributes(oauth2User.getAttributes());
}
您可以在构建时将 OAuth2AuthorizedClient
注入(也称为自动装配)到服务 class 中。
您可以按如下方式访问服务 class 内的安全主体:
SecurityContextHolder.getContext().getAuthentication()
我正在使用 spring-boot-starter-oauth2-resource-server
依赖项实现资源服务器。我指的是下面的代码,在 Controller
方法中,我们注入了依赖项,Spring 将使用反射自动注入 auth-client 和主体。
如果我想在服务 class 中定义的方法中访问这些对象怎么办?在服务 class 中调用方法时,我不想将这些值作为参数传递。请让我知道如何在服务 class.
中访问这些对象@RequestMapping("/oauthinfo")
@ResponseBody
public String oauthUserInfo(@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient,
@AuthenticationPrincipal OAuth2User oauth2User) {
return
"User Name: " + oauth2User.getName() + "<br/>" +
"User Authorities: " + oauth2User.getAuthorities() + "<br/>" +
"Client Name: " + authorizedClient.getClientRegistration().getClientName() + "<br/>" +
this.prettyPrintAttributes(oauth2User.getAttributes());
}
您可以在构建时将 OAuth2AuthorizedClient
注入(也称为自动装配)到服务 class 中。
您可以按如下方式访问服务 class 内的安全主体:
SecurityContextHolder.getContext().getAuthentication()