금일 인증 토큰을 생성하는 JwtPlugIn 을 만드는 과정에서 뜬금없이
Type mismatch: inferred type is Duration but TemporalAmount! was expected
이런 컴파일 애러를 확인 했다
fun generateToken(subject: String, email: String, role: String, expirationPeriod : Duration): String{
val key = Keys.hmacShaKeyFor(secret.toByteArray(StandardCharsets.UTF_8))
val now = Instant.now()
val claims: Claims = Jwts.claims()
.add(mapOf("email" to email, "role" to role))
.build()
return Jwts.builder()
.subject(subject)
.issuer(issuer)
.issuedAt(Date.from(now))
.expiration(Date.from(now.plus(expirationPeriod)))
.claims(claims)
.signWith(key)
.compact()
}
코드는 이러한데 여기서 expiration 이 타입이 안 맞는 다는 것이다
안쪽으로 들어가서 매개변수 타입을 보니 Date 타입이고
plus 도 타입에 맞게 잘 넣은 것을 볼 수 있다
그러면 뭐가 문제냐 봤는데 문제는 여기에 있었다
import io.jsonwebtoken.Claims
import io.jsonwebtoken.Jws
import io.jsonwebtoken.Jwts
import io.jsonwebtoken.security.Keys
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
import java.nio.charset.StandardCharsets
import java.time.Instant
import java.util.*
import kotlin.time.Duration
잘 찾아보니까 여기서 Duration이 Kotlin으로 Import가 되어 있었던 반면에 나머지 Time 및 util은 Java에서 Import 된 것을 확인 할 수 있었다 이 부분에서 Java가 Kotlin으로 컴파일 되는 과정에서 Type mismatch가 난 것으로 확인했다
import io.jsonwebtoken.Claims
import io.jsonwebtoken.Jws
import io.jsonwebtoken.Jwts
import io.jsonwebtoken.security.Keys
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
import java.nio.charset.StandardCharsets
import java.time.Instant
import java.util.*
import java.time.Duration
이 부분을 java로 고치니까 정상 컴파일 확인했다
역시 import 할 때도 파일 라이브러리 명 및 위치도 잘 확인하고 해야겠네;;
'Kotlin > Spring' 카테고리의 다른 글
[Spring / QueryDSL] UnsatisfiedDependencyException, Error creating bean with name 해결 (1) | 2024.06.17 |
---|---|
(Spring) 인증 개발을 하면서 겪은 다양한 버그들 (0) | 2024.06.05 |
(Spring) HTTP 프로젝트 HTTPS로 업그레이드 하기 (0) | 2024.05.31 |
(Spring) 복합키 설정 시 entitynotfoundexception unable to find with id 0 애러 해결 (0) | 2024.05.31 |
(Spring) FATAL: Max client connections reached 애러 해결 (0) | 2024.05.28 |