전체적인 로직은 위와 같다
위의 로직은 토큰을 생성하고, 추출하는 메소드 들이 들어있다.
처음 보는 개념들이 있어서 하나씩 살펴보도록 하겠다.
위의 로직들이 생성하는 로직이다.
주석을 통해서 설명을 하고 있으나, 다시 설명을 하도록 하겠다.
위의 로직은 억세스 토큰을 생성하는 로직이다.
억세스 토큰의 Subject에는 username과 유저의 등급을 넣었다.
Claims
의 put 메소드를 통해 정보들을 넣을 수 있다.
Claims
의 내부를 보면 설명이 잘 되어 있다.
Map을 상속받아서 put 메소드를 사용할 수 있다.
리프래쉬 토큰의 로직도 다르지 않다.
차이는 리프래쉬 토큰에는 유저의 등급을 넣지 않았다.
재발급을 받는 토큰이다보니 많은 정보가 담길 필요가 없기 때문이다.
이후 중요한 로직은 다음이다.
토큰을 생성하는 로직이 담겨있다.
주석에 어떻게 사용되는지 적혀있지만, 다시 보도록하면
우선 subject를 Claims
을 통해 불러온다.
그리고 오늘의 날짜와, 만료 날짜를 설정해주고
Jwts.*builder*()
을 사용하여 토큰을 생성한다.
Jwts 내부를 보면 아주 복잡한 과정들을 거치는데,
한 번 살펴보면 도움이 많이 될 것 같다.
추출하는 메소드는 간단하다.
중요하고, 처음 접하는 개념들만 살펴보겠다.
우선 펑션 기능을 처음 접했다.
형변환을 도와주는 메소드였다.
이런 식으로 매개 변수를 넣어주면 String으로 형변환해서 돌려주었다.
처음보는 개념이어서 공부하는데 도움이 많이 되었다.
토큰의 복호화는 Jwts의 메소드를 이용했다.
간단하게 복호화 할 수 있게 된다.
로직이 복잡해보일 수 있으나, 조금만 천천히 보다 보면 이해하는데 큰 어려움이 없었다.
하나씩 뜯어보면서 공부도 많이 할 수 있었다.
작성해야 하는 메소드가 많아서 조금 두려움이 있었지만
하나씩 하다보니 금방 따라가고 이해할 수 있었다.
나의 코드가 누군가에게 도움이 되기를 원한다.