반응형
오류 상황
JwtTokenProvider에서, application-jwt.properties 파일에서 jwt.secret.token 값을 가져오도록 코드를 작성하였으나, 해당 값을 불러오지 못하였음
JwtTokenProvider 코드 중 일부
- 생성자에서 JWT_SECRET_TOKEN_KEY 값을 가져오지 못하는 상황.
@Slf4j
@RequiredArgsConstructor
@Component
public class JwtTokenProvider {
private SecretKey JWT_SECRET_TOKEN_KEY;
public JwtTokenProvider(@Value("${jwt.secret.token}") String tokenKey) {
byte[] accessKeyBytes = Decoders.BASE64.decode(tokenKey);
JWT_SECRET_TOKEN_KEY = Keys.hmacShaKeyFor(accessKeyBytes);
}
// 테스트 코드 작성을 위해, LocalDate 값을 파라미터로 받도록 수정.
public String generateAccessToken(String userId, LocalDate currentDate) {
// LocalDate -> Date
Date date = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
return Jwts.builder()
.claim("user_id", userId)
.setSubject("Access_Token")
.setIssuedAt(date) // token 발급 시간
.setExpiration(new Date(date.getTime() + accessTokenExpiresIn))
.signWith(this.JWT_SECRET_TOKEN_KEY, SignatureAlgorithm.HS512)
.compact();
}
}
해결
아래와 같이 코드를 변경하니 해결되었음.
스프링 빈의 라이프사이클과 관련이 있는 것 같은데, 자세하게는 아직 잘 모르겠다.
@Slf4j
@Component
public class JwtTokenProvider {
private final SecretKey JWT_SECRET_TOKEN_KEY;
public JwtTokenProvider(@Value("${jwt.secret.token}") String tokenKey) {
byte[] accessKeyBytes = Decoders.BASE64.decode(tokenKey);
JWT_SECRET_TOKEN_KEY = Keys.hmacShaKeyFor(accessKeyBytes);
}
}
반응형
'Spring Boot' 카테고리의 다른 글
Spring Boot] org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save() (0) | 2023.07.15 |
---|---|
Spring Boot] 채팅 시스템 설계 (0) | 2023.07.11 |
Spring Boot] NCP Chatbot과 연동하기-기초 (0) | 2023.07.06 |
Spring Boot] JWT 토큰을 사용한 사용자 인증/인가 (0) | 2023.07.03 |
Spring Boot] OncePerRequestFilter 에서 json으로 응답 결과 보내기 (0) | 2023.07.02 |