2017-07-18 39 views
0

對於我的應用程序,我使用Spring安全來保護API Rest。爲此,我使用oauth2系統(使用AuthorizationServerConfiguration,OAuth2SecurityConfiguration和ResourceServerConfiguration)Spring安全oauth2修改響應正文連接

我找不到如何修改響應連接的正文。

對於那一刻,我有:

{ 
"access_token": "0d1dded8-3631-472a-ba63-89d67d133112", 
"token_type": "bearer", 
"refresh_token": "d9f4cc5d-748b-461f-b475-3bba95b512dc", 
"expires_in": 29162, 
"scope": "read write trust" 
} 

,我想這樣的事情:

{ 
"errorLevel":"OK", 
"errorMsg":"You are now connected", 
"data": { // access_token, token_type... } 
} 

我的第一個想法是執行我accessTokenConverter並將其添加到這樣的端點:

endpoints.accessTokenConverter(new CustomAccessTokenConverter()); 

但是,他不使用我的AccessTokenConverter。

那麼,我如何修改我的迴應?

回答

0

對於較新版本的spring,您可以使用ResponseBodyAdvice https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyAdvice.html來更改響應。

實現是這樣的:

@ControllerAdvice 
public class OauthReponseAdvice implements ResponseBodyAdvice<SomeResponseType> { 
@Override 
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { 
    return true; 
} 

@Override 
public SomeResponseType beforeBodyWrite(SomeResponseType body, MethodParameter returnType, MediaType selectedContentType, Class<? extends 
HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { 

    /// Modify body here 
    return body; 
    } 
} 
+0

謝謝,它的工作原理。 – Guinaume