1
1
package org .baeldung .config ;
2
2
3
+ import java .io .IOException ;
3
4
import java .io .InputStream ;
5
+ import java .util .Map ;
4
6
5
7
import javax .servlet .http .Cookie ;
6
8
7
9
import org .apache .commons .io .IOUtils ;
8
- import org .codehaus .jackson .JsonNode ;
9
- import org .codehaus .jackson .map .ObjectMapper ;
10
10
import org .slf4j .Logger ;
11
11
import org .slf4j .LoggerFactory ;
12
12
import org .springframework .stereotype .Component ;
13
13
14
+ import com .fasterxml .jackson .core .type .TypeReference ;
15
+ import com .fasterxml .jackson .databind .ObjectMapper ;
14
16
import com .netflix .zuul .ZuulFilter ;
15
17
import com .netflix .zuul .context .RequestContext ;
16
18
@@ -25,29 +27,30 @@ public Object run() {
25
27
final RequestContext ctx = RequestContext .getCurrentContext ();
26
28
logger .info ("in zuul filter " + ctx .getRequest ().getRequestURI ());
27
29
28
- JsonNode json ;
29
30
try {
30
31
final InputStream is = ctx .getResponseDataStream ();
31
- final String responseBody = IOUtils .toString (is , "UTF-8" );
32
-
33
- ctx .setResponseBody (responseBody );
34
-
32
+ String responseBody = IOUtils .toString (is , "UTF-8" );
35
33
if (responseBody .contains ("refresh_token" )) {
36
- json = mapper .readTree (responseBody );
37
- final String refreshToken = json .get ("refresh_token" ).getTextValue ();
34
+ final Map <String , Object > responseMap = mapper .readValue (responseBody , new TypeReference <Map <String , Object >>() {
35
+ });
36
+ final String refreshToken = responseMap .get ("refresh_token" ).toString ();
37
+ responseMap .remove ("refresh_token" );
38
+ responseBody = mapper .writeValueAsString (responseMap );
39
+
38
40
final Cookie cookie = new Cookie ("refreshToken" , refreshToken );
39
41
cookie .setHttpOnly (true );
40
42
// cookie.setSecure(true);
41
43
cookie .setPath (ctx .getRequest ().getContextPath () + "/oauth/token" );
42
44
cookie .setMaxAge (2592000 ); // 30 days
43
45
ctx .getResponse ().addCookie (cookie );
44
-
45
46
logger .info ("refresh token = " + refreshToken );
47
+
46
48
}
47
- } catch (final Exception e ) {
49
+ ctx .setResponseBody (responseBody );
50
+
51
+ } catch (final IOException e ) {
48
52
logger .error ("Error occured in zuul post filter" , e );
49
53
}
50
-
51
54
return null ;
52
55
}
53
56
0 commit comments