/**
* methodName : generateRefreshToken
* author : Jaeyeop Jung
* description : User를 통해서 RefreshToken을 생성하고 반환한다.
*
* @param user User Entity
* @return RefreshToken 정보
*/
public String generateRefreshToken(User user){
Date now = new Date();
return Jwts.builder()
.setHeaderParam("typ", "REFRESH_TOKEN")
.setHeaderParam("alg", "HS256")
.setSubject(user.getId().toString())
.setIssuedAt(now)
.setExpiration(new Date(now.getTime() + REFRESH_TOKEN_EXPIRE_TIME))
.claim("role", user.getRole().toString())
.signWith(SignatureAlgorithm.HS256, secretKey)
.compact();
}
/**
* methodName : generateAccessToken
* author : Jaeyeop Jung
* description : User를 통해서 AceesToken 생성하고 반환한다.
*
* @param user User Entity
* @return AccessToken 정보
*/
public String generateAccessToken(User user){
Date now = new Date();
return Jwts.builder()
.setHeaderParam("typ", "ACCESS_TOKEN")
.setHeaderParam("alg", "HS256")
.setSubject(user.getId().toString())
.setIssuedAt(now)
.setExpiration(new Date(now.getTime() + ACCESS_TOKEN_EXPIRE_TIME))
.claim("role", user.getRole().toString())
.signWith(SignatureAlgorithm.HS256, secretKey)
.compact();
}
JwtTokenProvider 클래스에 정의한 JWT 토큰을 만들어내는 메소드 들이다.
Jwt 토큰을 만드는 메소드나 클래스들은 여러개가 만들어져있다. 이 부분은 구글링을하여 참고하면 좋을 것 같다.
해당 메소드들은 나 같은 경우에 UserController -> UserService에서 회원가입, 로그인을 하는 메소드에서 사용하였다.
고로 사용자는 "/login", "/join" 과 같이 로그인과 회원가입 url을 통해 접근하여 완료하면 토큰을 발급받고 HTTP Response 헤더나 바디에 해당 토큰 값을 받게 된다.