Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
if (header == null || !header.startsWith("Bearer ")) {
filterChain.doFilter(request, response);

log.info("JwtAuthorizationFilter 1 ");
log.debug("JwtAuthorizationFilter: Authorization 헤더가 없거나 Bearer 토큰 형식이 아님. JWT 인증 필터를 건너뜁니다. [header={}] ", header);
return;
}

Expand All @@ -51,7 +51,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().print("access token expired");

log.info("JwtAuthorizationFilter 2 ");
log.warn("JwtAuthorizationFilter: 만료된 AccessToken 입니다. 토큰 인증 거부, URI: {}", request.getRequestURI());
return;
}

Expand All @@ -63,14 +63,21 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().print("invalid access token");

log.info("JwtAuthorizationFilter 3 ");
log.warn("JwtAuthorizationFilter: 잘못된 토큰 유형(accessToken 아님)으로 인증 요청. URI: {}, tokenCategory: {}", request.getRequestURI(), tokenCategory);
return;
}

// userId와 role 값 추출
Long userId = jwtUtil.getUserId(accessToken);
String roleString = jwtUtil.getRole(accessToken);

if (userId == null || roleString == null) {
log.warn("JwtAuthorizationFilter: JWT에서 userId 또는 role 추출 실패. 토큰: {}", accessToken);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().print("invalid token");
return;
}

User user = User.createUserWithId(userId, "sampleEmail", "sampleNickname", "sampleProfileImg"
, SocialType.KAKAO, Role.fromString(roleString));

Expand All @@ -83,7 +90,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
// 생성한 인증 정보를 SecurityContext에 설정
SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);

log.info("JwtAuthorizationFilter 4 ");
log.info("JwtAuthorizationFilter: 인증 성공. userId={}, role={}, URI={}", userId, roleString, request.getRequestURI());

filterChain.doFilter(request, response);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,29 @@ public class TokenService {
private final JwtUtil jwtUtil;

@Transactional
public Boolean validateToken(String token, Long userId){
public boolean validateToken(String token, Long userId){
// DB에서 해당 userId와 일치하는 리프레시토큰을 찾는다.
Optional<Token> savedToken = tokenRepository.findByUserId(userId);

// DB에서 userId에 대응되는 리프레시토큰 없으면, 유효하지 않음
if (savedToken.isEmpty()){
log.info("여기에 걸렸니 ? -- 1 ");
log.debug("DB에 현재 userId에 대응되는 리프레시 토큰이 없습니다");
return false;
}

// 리프레시 토큰이 DB에 저장된 토큰과 일치하는지 확인
if (!savedToken.get().getRefreshToken().equals(token)){
log.info("여기에 걸렸니 ? -- 2 ");
log.debug("DB에 저장된 리프레시 토큰와 현재 전달받은 리프레시 토큰 일치하지 않습니다");
return false;
}

// 리프레시 토큰의 만료여부 확인
if(jwtUtil.isExpired(token)){
log.info("여기에 걸렸니 ? -- 3 ");
log.debug("리프레시 토큰이 만료된 토큰입니다");
return false; // 만료된 토큰은 유효하지 않음
}

log.info("여기에 걸렸니 ? -- 4 ");
log.info("리프레시 토큰이 유효한 토큰입니다");
return true; // 모든 조건 만족 시, 유효한 토큰
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import lombok.Getter;
import lombok.RequiredArgsConstructor;

// TODO 자바 코드로 변경 후 common 모듈로 이동
@Getter
@RequiredArgsConstructor
@Schema(description = "주문 상태 Enum")
Expand Down