JWT 통합springboot token 인증 구현(코드 실습)

2193 단어 Java 백그라운드
JWT의 소개와 장단점은 여기서 설명하지 않겠습니다. 이러한 인터넷의 소개는 여기서 두세 마디 말보다 더욱 명확하다고 믿습니다. 본고는 단일 로그인으로 사용자의 체험을 향상시키는 데 사용됩니다.
  • token을 생성하여 전단에 되돌려주고 전단은 쿠키에 저장할 수 있으며 후면api인터페이스를 호출할 때 후단에 발송
  • public static final long EXPIRATION_TIME = 3600_000; // 1 hour
    public static final String SECRET = "secret";
    public static final String TOKEN_PREFIX = "Bearer";
    public static final String HEADER_STRING = "Authorization";
    public static final String ROLE = "ROLE";
    
    public static String getToken(String userRole) {
        HashMap map = new HashMap<>();
        map.put(ROLE, userRole);
    
        String jwt = Jwts.builder()
                .setClaims(map)  //playload  
                .setSubject("  ")   //   
                .setIssuer("jay")     //    
                .setIssuedAt(new Date()) //     
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) //    
                .signWith(SignatureAlgorithm.HS512, SECRET) //  
                .compact();
        return TOKEN_PREFIX + " " + jwt;
    }
  • token을 분석하고playload부분의 데이터를 추출하여 비교
  • public static HttpServletRequest validateTokenAndAddUserIdToHeader(HttpServletRequest request) {
        String token = request.getHeader(HEADER_STRING);
        if (token != null) {
            // parse the token.
            try {
                Map body = Jwts.parser()
                        .setSigningKey(SECRET)
                        .parseClaimsJws(token.replace(TOKEN_PREFIX, ""))
                        .getBody();
                return new CustomHttpServletRequest(request, body);
            } catch (Exception e) {
                logger.info(e.getMessage());
                throw new TokenValidationException(e.getMessage());
            }
        } else {
            throw new TokenValidationException("Missing token");
        }
    }
  • 해석 부분은 보통 차단기에서 처리하고 기한이 초과되면 로그인 페이지로 돌아간다. Token의 기한이 지나면 App으로 바꾸는 방식을 사용할 수 있다. 예를 들어 App이 앱을 열 때마다 Token의 기한을 갱신하면 사용자가 중복 로그인하는 것을 피할 수 있다.

  •  
    유사 기사 추천:https://www.jianshu.com/p/fe67b4bb6f2c
    GitHub 권장사항:https://github.com/ZhongjunTian/spring-boot-jwt-demo/basic
     

    좋은 웹페이지 즐겨찾기