TIL

[TIL - 20230418] JWT

Chef.Yeon 2023. 4. 18. 00:57

 

💻문제점

회원가입을 하고 다음과 같이 로그인을 해서 토큰을 얻었다. Bearer ey어쩌구~~

로그인을 해야 게시물 등록이 가능하기에, 헤더 부분에 토큰을 넣어줬다.

하지만 다음과 같은 에러가 떴다.


📃시도

토큰에 띄어쓰기가 있어 사용할 수 없다는 것 같은데, 아무리 봐도 띄어쓰기가 안 보였다. 

한참 application.yml 에 있는 jwt.secret.key를 들여다 보며 요리조리 키를 바꾸어봤었다.

key값에 replace를 줘서 띄어쓰기를 다른 문자로 바꾸려고 했지만, 내가 찾을 수 없는 띄어쓰기는 역시 코드도 찾지 못한 모양... 


🔍해결

원인은 jwt.secret.key가 아니었다. 당연하다. 왜냐하면 토큰은 내가 생성한거니까. 나는 이상한 곳에서 삽질하고 있었던 것... 내가 생성한 토큰이 Bearer ey어쩌구~~ 인데 여기서 Bearer 다음에 띄어쓰기가 생긴다. 일단 내가 필요한 것은 ey어쩌구~ 부분이고 'Bearer ' 부분은 필요가 없다. 토큰을 가져올 때 prefix인 'Bearer '가 함께 있기 때문에 오류가 발생한 것이었다.

결과적으로 다음과 같이 띄어쓰기를 기준으로 split 해서 ey어쩌구~ 부분만 가져오도록 했다.

public Claims getUserInfoFromToken(String token) {
    token = token.split(" ")[1].trim();
    return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody();
}

 

다음과 같이 정상적으로 게시글 등록이 된 것을 확인 할 수 있다.

728x90