{"code" : 12345, "data" : "..." }
但是身份验证失败的JSON响应与上述格式不符,因为它由Spring处理。
例如,如果凭据不正确,则客户端会收到HTTP状态码400,并获得以下JSON响应:
{"error": "invalid_grant", "error_description": "Bad credentials" }
如果用户账户被锁定,客户端将收到HTTP状态码400,并得到以下JSON响应:
{"error":"invalid_grant","error_description":"User account is locked"}
所有这些都是因为Spring TokenEndpoint.handleException()处理与/oauth/token相关的异常。
我想将OAuth2失败的JSON响应更改为遵循第一种格式。
到目前为止,我尝试了以下方法但均未成功:
1.使用ControllerAdvice并具有最高优先级顺序,并使用@ExceptionHandler如here所述
2.实现OAuth2ExceptionRenderer,如here所述
3.实现ExceptionMapper
4.添加一个新的ObjectMapper并扩展StdSerializer。虽然我的objectmapper已初始化,但它没有用于序列化异常。也许是因为Spring直接调用MappingJackson2HttpMessageConverter,而我的应用程序中似乎有几个此类的实例。
非常感谢任何上述方法或新方法上的任何帮助。
我没有尝试this的方法,因为我无法更改现有客户端的上下文路径。