Skip to content

Commit

Permalink
Merge pull request #11 from kimtjrgus/feat/be/todo/member
Browse files Browse the repository at this point in the history
feat : jwt 토큰 응답바디 전달
  • Loading branch information
kimtjrgus authored May 21, 2023
2 parents 4cf0618 + 77b387b commit 6a180c4
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mainproject.wrieating.auth.dto;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
public class LoginResponseDto {
private String accessToken;
private String refreshToken;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mainproject.wrieating.auth.dto.LoginDto;
import com.mainproject.wrieating.auth.dto.LoginResponseDto;
import com.mainproject.wrieating.auth.jwt.JwtTokenizer;
import com.mainproject.wrieating.member.entity.Member;
import lombok.SneakyThrows;
Expand Down Expand Up @@ -48,13 +49,24 @@ protected void successfulAuthentication(HttpServletRequest request,
Authentication authResult) throws ServletException, IOException{
Member member = (Member) authResult.getPrincipal();


String accessToken = delegateAccessToken(member);
String refreshToken = delegateRefreshToken(member);

// 응답헤더에 담기
response.setHeader("Authorization", "Bearer " + accessToken);
response.setHeader("Refresh", refreshToken);

this.getSuccessHandler().onAuthenticationSuccess(request, response, authResult);

// 응답바디에 담기
LoginResponseDto responseBody = new LoginResponseDto();
responseBody.setAccessToken("Bearer " + accessToken);
responseBody.setRefreshToken(refreshToken);

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new ObjectMapper().writeValueAsString(responseBody));
}

private String delegateAccessToken(Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,21 @@ public String generateAccessToken(Map<String, Object> claims,

return Jwts.builder()
.setClaims(claims)
.setSubject(subject)
.setIssuedAt(Calendar.getInstance().getTime())
.setExpiration(expiration)
.signWith(key)
.setSubject(subject) // 토큰 제목
.setIssuedAt(Calendar.getInstance().getTime()) // 발급시간
.setExpiration(expiration) // 만료시간
.signWith(key) // 알고리즘, 시크릿키
.compact();
}

public String generateRefreshToken(String subject, Date expiration, String base64EncodedSecretKey){
Key key = getKeyFromBase64EncodedKey(base64EncodedSecretKey);

return Jwts.builder()
.setSubject(subject)
.setIssuedAt(Calendar.getInstance().getTime())
.setExpiration(expiration)
.signWith(key)
.setSubject(subject) // 토큰 제목
.setIssuedAt(Calendar.getInstance().getTime()) // 발급시간
.setExpiration(expiration) // 만료시간
.signWith(key) // 알고리즘, 시크릿키
.compact();
}

Expand All @@ -87,6 +87,7 @@ public void verifySignature(String jws, String base64EncodedSecretKey) {
.parseClaimsJws(jws);
}

// 토큰 유효시간 얻는 메서드
public Date getTokenExpiration(int expirationMinutes) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, expirationMinutes);
Expand Down

0 comments on commit 6a180c4

Please sign in to comment.