繁体   English   中英

更改Spring OAuth2的Json返回格式

[英]Changing Json return format of Spring OAuth2

在巩固我们的json响应时,我尝试将spring oauth2 json响应更改为我们的格式。

{
  "error": "invalid_token",
  "error_description": "Invalid access token: undefined"
}

{
  "status" : 401,
  "error_code": "invalid_token",
  "description": "Invalid access token: undefined"
}

我已经调试并找到了几个可能相关的点,但我很难将所有内容整合在一起。

这些是我的方法

  • 响应写在这里OAuth2ExceptionJackson2Serializer ,但我不知道如何在spring中交换序列化器
  • 我找到了WebResponseExceptionTranslator 但根据我的理解,它不允许在那里设置一个json体
  • json主体由DefaultOAuth2ExceptionRenderer编写,但我无法设置它。 我只是通过在AuthorizationServerEndpointsConfigurer设置它来找到如何设置ExceptionTranslator 但它不允许设置渲染器
  • 该文档讨论了如何设置HttpMessageConverter ,我没有弄清楚如何做到这一点。

长话短说,我是Spring的新手,我真的很感激如何修改repsonse的一些指导。

谢谢,奥托

找到解决方案,注册WebResponseExceptionTranslator:

    @Bean
public WebResponseExceptionTranslator webResponseExceptionTranslator() {
    return new DefaultWebResponseExceptionTranslator() {
        @Override
        public ResponseEntity<OAuth2Exception> translate(Exception e) throws Exception {
            ResponseEntity<OAuth2Exception> responseEntity = super.translate(e);
            OAuth2Exception body = responseEntity.getBody();
            HttpHeaders headers = new HttpHeaders();
            headers.setAll(responseEntity.getHeaders().toSingleValueMap());

           // translate the exception

            return new ResponseEntity<>(body, headers, responseEntity.getStatusCode());
        }
    };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM