在响应正文中发送JWT令牌Java Spring

Ham*_*mza 1 java spring-security jwt spring-boot

我在Header中发送了JWT的令牌,但是客户端在响应的主体中需要它,如何将其放在响应中:

    @Override
    受保护的无效successAuthentication(
            HttpServletRequest请求,HttpServletResponse响应,FilterChain链,身份验证authResult)
            引发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); }

Run Code Online (Sandbox Code Playgroud)

我需要将令牌放入响应中

小智 6

如果我对您的理解正确,那么您只需要创建一个响应主体

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

看看如何从Java Servlet返回JSON对象