Hamza
Hamza

Reputation: 93

Sending JWT Token in the body of response Java Spring

I send the token of JWT in Header, but the client need it in the body of the response, how can I put it in the response :

    @Override
    protected void successfulAuthentication(
            HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult)
            throws IOException, ServletException {

User springUser = (User) authResult.getPrincipal(); String jwt = Jwts.builder() .setSubject(springUser.getUsername()) .setExpiration(new Date(System.currentTimeMillis()+SecurityConstants.EXPIRATION_TIME)) .signWith(SignatureAlgorithm.HS256, SecurityConstants.SECRET) .claim("roles",springUser.getAuthorities()) .compact(); response.addHeader(SecurityConstants.HEADER_STRING, SecurityConstants.TOKEN_PREFIX+jwt); }

I need to put the token in the response

Upvotes: 8

Views: 7398

Answers (1)

Mr. Skip
Mr. Skip

Reputation: 417

If I understand you properly you just need to create a response body

response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(
            "{\"" + SecurityConstants.HEADER_STRING + "\":\"" + SecurityConstants.TOKEN_PREFIX+jwt + "\"}"
    );

Take a look at How do you return a JSON object from a Java Servlet

Upvotes: 18

Related Questions