public TokenProvider(@Value("${jwt.secret}") String secret,
@Value("${jwt.token-validity-in-seconds}") long tokenValidityInSeconds,
UserRepository userRepository) {
// Base64로 인코딩한 secret 값 사용
this.secret = Base64.getEncoder().encodeToString(secret.getBytes());
this.tokenValidityInMilliseconds = tokenValidityInSeconds * 1000;
this.userRepository = userRepository;
}
수정
public TokenProvider(@Value("${jwt.secret}") String secret,
@Value("${jwt.token-validity-in-seconds}") long tokenValidityInSeconds,
UserRepository userRepository) {
// Base64로 인코딩한 secret 값 사용
this.secret = Base64.getEncoder().encodeToString(secret.getBytes());
this.tokenValidityInMilliseconds = tokenValidityInSeconds * 1000;
this.userRepository = userRepository;
}
// 토큰 생성 및 검증 시에는 디코딩한 비밀키 사용 >> 이 내용을 추가
@PostConstruct
public void init() {
// secret 값을 Base64로 디코딩하여 키 생성
byte[] keyBytes = Base64.getDecoder().decode(secret);
this.key = Keys.secretKeyFor(SignatureAlgorithm.HS512);
}
오류 내용
회원가입 후 토큰을 못 받아와 로그인이 안 됨.
오류 원인
tokenprovider에서 key 값을 인코딩만 하고 디코딩 해주지 않음.
오류 해결
기존
수정