gpt4 book ai didi

java - 改变Spring OAuth2的Json返回格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:51 25 4
gpt4 key购买 nike

在整合我们的 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 编写,但我无法设置它。我只找到了如何设置 ExceptionTranslator,方法是在 AuthorizationServerEndpointsConfigurer 中设置它。但是它不允许设置渲染器
  • 文档讨论了如何设置 HttpMessageConverter,我不知道该怎么做。

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

谢谢,奥托

最佳答案

找到解决方案,注册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());
}
};
}

关于java - 改变Spring OAuth2的Json返回格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com