簡體   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