我使用Spring Oauth2和Spring Pre-post Annotations用Spring-boot
Spring Oauth2
Spring Pre-post Annotations
Spring-boot
我有一个服务班MyService。一个MyService方法是:
MyService
@PreAuthorize("#id.equals(authentication.principal.id)") public SomeResponse getExampleResponse(String id){...}
我可以某种方式控制调用方控制器返回的json吗?
默认返回的json是:
{error : "access_denied" , error_message: ".."}
我希望能够控制error_message参数。我正在寻找类似的东西:
error_message
@PreAuthorize(value ="#id.equals(authentication.principal.id)", onError ="throw new SomeException("bad params")") public SomeResponse getExampleResponse(String id){...}
我想到的一种方法是使用 ExceptionHandler
ExceptionHandler
@ExceptionHandler(AccessDeniedException.class) public Response handleAccessDeniedException(Exception ex, HttpServletRequest request){ ... }
但我无法控制message例外。而且我不确定这Exception会在将来的版本中抛出
message
Exception
有关错误处理的Spring Boot文档:http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot- features-error-handling。控制JSON的一种方法是添加@Beantype ErrorAttributes。
@Bean
ErrorAttributes
@Bean ErrorAttributes errorAttributes() { return new MyErrorAttributes(); }