Skip to content

Feat/#20 토큰 체인 필터 구현 - #24

Merged
02-wooki merged 37 commits into
mainfrom
feat/#20
Sep 18, 2025
Merged

Feat/#20 토큰 체인 필터 구현#24
02-wooki merged 37 commits into
mainfrom
feat/#20

Conversation

@02-wooki

@02-wooki 02-wooki commented Sep 17, 2025

Copy link
Copy Markdown
Contributor

#️⃣ 연관된 이슈

close #20


🔎 작업 내용

  • 토큰 체인 필터를 사용하여 Http 요청이 컨트롤러에 도달하기 전에 인터셉트해 인증된 유저의 Member 객체를 주입합니다.
  • 새로 구현된 IdentifiedUser, ResolvedUser 어노테이션을 통해 인증된 유저의 멤버 객체 혹은 선택 인증 멤버 객체를 컨트롤러 파라미터로 받아 Jwt 인증을 손쉽게 작성 가능합니다.

✅ Checklist

  • 커밋 메시지 컨벤션에 맞게 작성했습니다.
  • 변경 사항에 대한 테스트를 했습니다.
  • 필요 없는 import문이나 setter 등을 삭제했습니다.
  • 기존의 코드에 영향이 없는 것을 확인했습니다.

💬 리뷰 요구사항(선택)

JwtAuthenticationFilter, JwtTokenResolver, JwtUtil, CustomAuthenticationEntryPoint 위주로 봐주세요

공항의 보안 검사대에서 여행객이 여권을 보여주는 상황을 상상해 보세요.

JwtAuthenticationFilter: 보안 검사대 직원입니다. 모든 여행객(HTTP 요청)을 가장 먼저 만나 여권(토큰)을 소지했는지, 그리고 유효한지 검사합니다.

JwtTokenResolver: 직원이 여행객의 여권을 받는 손입니다. 가방(요청 헤더)에서 여권(토큰)을 꺼내 직원에게 전달하는 역할만 합니다. 여권의 내용(토큰 유효성)을 확인하지는 않아요.

JwtUtil: 여권 감식기입니다. 여권이 위조되었는지, 만료되었는지 등을 확인하는 전문 기계죠. 이 기계는 여권의 사진(이메일)만 따로 빼내어 직원에게 알려주기도 합니다.

CustomAuthenticationEntryPoint는 마치 특정 구역의 출입구를 지키는 경비원과 같습니다. 이 경비원은 출입증(유효한 토큰)이 없거나, 출입증을 제시했는데도 신원 확인(DB에서 사용자 조회)이 안 되는 사람이 오면 즉시 막아서는 역할을 합니다

image

		   - Jwt 인증받은 멤버 객체: IdentifiedUser
		   - Jwt 인증받지 않아도 되는 객체: ResolvedUser
		  - 실제 username 필드의 Getter로 getUsername 대신 getNickname 할당
@github-actions

Copy link
Copy Markdown

Test Coverage Report

Overall Project 100% 🍏
Files changed 100% 🍏

File Coverage
MemberService.java 100% 🍏
Member.java 100% 🍏
JwtTokenResolver.java 100% 🍏
CustomAuthenticationEntryPoint.java 100% 🍏
JwtAuthenticationFilter.java 100% 🍏
JwtUtil.java 100% 🍏
ResolvedUserArgumentResolver.java 100% 🍏
IdentifiedUserArgumentResolver.java 100% 🍏
AuthService.java 100% 🍏
MemberController.java 100% 🍏

@02-wooki 02-wooki self-assigned this Sep 18, 2025
@lgw323

lgw323 commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

훌륭합니다.
잘보고가요

@myasehyun myasehyun closed this Sep 18, 2025
@02-wooki 02-wooki reopened this Sep 18, 2025
@ybson0718

Copy link
Copy Markdown
Collaborator

최고에요

@OppSpark

Copy link
Copy Markdown

멋지네요

@OppSpark OppSpark left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

멋지네요

@lgw323 lgw323 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정말 열심히 만드셨어요

@myasehyun myasehyun left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음 쩝쩝 뭐 고생한 흔적이 너무 잘보이네요,, 볼때마다 스크롤 길이가 달라지니 볼맛나네요.

@ybson0718 ybson0718 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

완벽하네요!

@02-wooki
02-wooki merged commit 22ffa89 into main Sep 18, 2025
2 checks passed
@02-wooki
02-wooki deleted the feat/#20 branch September 18, 2025 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 토큰 인터셉터 구현

5 participants