【问题标题】:Accessing Oauth client and Principal inside the service class method在服务类方法中访问 Oauth 客户端和主体
【发布时间】:2021-11-22 07:27:10
【问题描述】:

我正在使用 spring-boot-starter-oauth2-resource-server 依赖项实现资源服务器。我指的是下面的代码,在 Controller 方法中,我们已经注入了依赖项,Spring 将使用反射自动注入 auth-client 和主体。

如果我想在服务类中定义的方法中访问这些对象怎么办?在服务类中调用方法时,我不想将这些值作为参数传递。请告诉我,如何在服务类中访问这些对象。

@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());  
    }  

【问题讨论】:

    标签: spring-boot spring-mvc spring-security-oauth2


    【解决方案1】:

    您可以在构造服务类中注入OAuth2AuthorizedClient(也称为自动装配)。

    您可以按如下方式访问服务类中的安全主体:

     SecurityContextHolder.getContext().getAuthentication()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2011-09-09
      • 1970-01-01
      • 2013-12-27
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多