Skip to content

πŸ™‡ μ½”λ“œλ¦¬λ·° μš”μ²­#143

Open
seonghye0n wants to merge 1 commit intodevelopfrom
docs/riview-mentor
Open

πŸ™‡ μ½”λ“œλ¦¬λ·° μš”μ²­#143
seonghye0n wants to merge 1 commit intodevelopfrom
docs/riview-mentor

Conversation

@seonghye0n
Copy link
Copy Markdown
Owner

star1 μ•ˆλ…•ν•˜μ„Έμš” λ©˜ν† λ‹˜! μ½”λ“œ 리뷰 잘 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€ !!

λ°•μ„±ν˜„

  1. μ—¬λŸ¬ DTO에 κ³΅ν†΅λœ ν•„λ“œλ“€μ΄ μžˆλŠ”λ° ν•œλ²ˆμ— Validation 처리λ₯Ό ν•˜λŠ” 방법이 μžˆμ„κΉŒμš”? μ–΄λ–€ ν‚€μ›Œλ“œλ‘œ 찾아봐야될지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€..! 예λ₯Ό
    λ“€μ–΄μ„œ μ—°μ°¨/당직 Request DTO에 SaveDto, UpdateDto 두 Dto에 κ³΅ν†΅λœ ν•„λ“œλ“€μ΄ μžˆλŠ”λ° messageλ₯Ό 일일이 μž…λ ₯ν•˜λŠ”κ²Œ λ²ˆκ±°λ‘­λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€!
  2. μ½”λ“œ 관련은 μ•„λ‹ˆμ§€λ§Œ κΆκΈˆν•œκ²Œ μžˆμ–΄μ„œ μ§ˆλ¬Έλ“œλ¦½λ‹ˆλ‹€. 첫 λ©˜ν† λ§ λ•Œ, ν˜„μ—…μ—μ„œλ„ κ°œμΈμ •λ³΄λ₯Ό μ•”ν˜Έν™”ν•œ 값을 DB에 μ €μž₯ν•œλ‹€κ³  ν•˜μ…¨λŠ”λ° ν˜Ήμ‹œ 직접 쿼리둜 μ‘°νšŒν•˜μ‹€ λ•ŒλŠ” μ•”ν˜Έν™”λœ 값을 μ–΄λ–»κ²Œ λ³΅ν˜Έν™”ν•˜λ‚˜μš”?? 예λ₯Ό λ“€μ–΄, ν˜„μž¬ 이름이 μ•”ν˜Έν™”ν•œ κ°’μœΌλ‘œ DB에 μ €μž₯되고 μžˆλŠ”λ°, κ΄€λ¦¬μžκ°€ κΈ‰ν•˜κ²Œ νŠΉμ • μ΄λ¦„μœΌλ‘œ νšŒμ›λͺ©λ‘μ„ 뽑아달라고 μš”μ²­ν•˜λ©΄ μ–΄λ–»κ²Œ μ‘°νšŒν•  수 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

μ„œμš©ν˜„

  1. SecurityConfig filter

    • 정신없이 κΈ°λŠ₯κ΅¬ν˜„μ—λ§Œ μ§‘μ€‘ν•˜λ‹€κ°€ λ³΄λ‹ˆ ν•„ν„° ν•˜λ‚˜μ˜ λ„ˆλ¬΄ λ§Žμ€ κΈ°λŠ₯을 μΆ”κ°€ν•œ 것 κ°™μ•„μ„œ ν˜„μž¬ λΆ€λΆ„μ˜ cookie 검증 λΆ€λΆ„μ΄λ‚˜, jwt 생성 뢀뢄을 λ‹€λ₯Έ ν•„ν„°λ‘œ λ‚˜λˆ„λŠ” 것은 μ–΄λ–¨κΉŒ ν•˜λŠ” μƒκ°μž…λ‹ˆλ‹€.
  2. 둜그인 μ‹œ 응닡값 λΆ€λΆ„

    • ν”„λ‘ νŠΈ μš”κ΅¬μ‚¬ν•­μœΌλ‘œλŠ” body 에 accessToken, role(νšŒμ›μ˜ κΆŒν•œ) 을 λ‹΄μ•„μ„œ λ³΄λ‚΄μ£ΌλŠ” κ²ƒμ΄λΌμ„œ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•˜μ˜€λŠ”λ° role 뢀뢄도 jwt 에 subject 에 λ„£λŠ” 것이 더 쒋은지
      κΆκΈˆν•©λ‹ˆλ‹€.
  3. MemberRequestDto, GlobalExceptionHandler

    • validation μ—λŸ¬λ₯Ό handler 처리λ₯Ό ν•˜λ €κ³  μž‘μ„±ν•˜μ˜€λŠ”λ° ꡳ이 이거 ν•˜λ‚˜ λ•Œλ¬Έμ— handler μ²˜λ¦¬ν•˜κΈ°μ—λŠ” μ΄μƒν•˜λ‹€κ³  생각이 λ“­λ‹ˆλ‹€. 이런 μƒν™©μ—μ„œλŠ” handler 처리 ν•˜λŠ” 방법을 μ•Œκ³ 
      μ‹ΆμŠ΅λ‹ˆλ‹€.
  4. 둜그인/λ‘œκ·Έμ•„μ›ƒ Controller, SecurityConfig

    • login, logout 을 security 에 filter둜 κ΅¬ν˜„ν•˜μ§€ μ•Šκ³  MemberController 에 λ©”μ„œλ“œ ν˜•νƒœλ‘œ μž‘μ„±ν•˜μ˜€λŠ”λ° 이런 μ‹μ˜ μ½”λ“œ μž‘μ„±μ΄ 쒋은지 filter 에 μ μš©ν•˜λŠ” 것이 쒋은지
      κΆκΈˆν•©λ‹ˆλ‹€.

@seonghye0n seonghye0n added the question Further information is requested label Aug 22, 2023
@software-dev-mentor
Copy link
Copy Markdown

μ•ˆλ…•ν•˜μ„Έμš”. 리뷰가 λŠ¦μ–΄ μ£„μ†‘ν•©λ‹ˆλ‹€.

  • λ°•μ„±ν˜„ λ‹˜ @seonghye0n
    • 1
      • μš°μ„  μ™œ DTO λ₯Ό ν•œλ²ˆ 더 κ°μ‹Έμ„œ κ΄€λ¦¬ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. save,cancelλ“± 각각의 dto class둜 κ΄€λ¦¬ν•˜μ‹œλŠ”κ²Œ μœ μ§€λ³΄μˆ˜ μΈ‘λ©΄μ—μ„œ 더 쒋을것 κ°™κ΅¬μš”
      • μ˜ˆμ»¨λŒ€, titleμ΄λΌλŠ” μž…λ ₯에 λŒ€ν•œ validation을 ν•œλ²ˆμ— μ²˜λ¦¬ν•˜κ³  μ‹ΆμœΌμ‹ κ±°λΌλ©΄ ν•„ν„°λ‚˜ 인터셉터 λ ˆμ΄μ–΄μ—μ„œ ν•΄λ‹Ή μš”μ²­μ„ 보고 곡톡화 ν• μˆ˜λ„ μžˆμ„κ²ƒ κ°™μ§€λ§Œ 각 DTOλŠ” 각각의 μ±…μž„κ³Ό 관심사, 역할이 κ΅¬λΆ„λ˜κΈ° λ•Œλ¬Έμ— κ³΅ν†΅λœ ν•„λ“œμ΄κΈ΄ ν•˜μ§€λ§Œ 객체지ν–₯ κ΄€μ μ—μ„œ 각각 처리λ₯Ό ν•΄μ•Ό ν•œλ‹€κ³  생각이 λ“­λ‹ˆλ‹€.
    • 2
      • 일반적으둜 μ•”ν˜Έν™” 된 데이터 λ² μ΄μŠ€μ— 직접 쿼리 질의λ₯Ό ν•΄μ„œ 데이터λ₯Ό μ‘°νšŒν•˜λŠ” κ²½μš°λŠ” 잘 μ—†μŠ΅λ‹ˆλ‹€. μ•”/λ³΅ν˜Έν™” 도 ν•΄μ•Όν•˜κ³ μš”. κ·Έλž˜μ„œ λ³„λ„μ˜ μ–΄λ“œλ―Όμ„ κ΅¬μ„±ν•΄μ„œ 데이터λ₯Ό 쑰회/μΆ”μΆœ ν•˜λŠ” 경우둜 μ‚¬μš©λ˜κ³€ ν•©λ‹ˆλ‹€.
      • 데이터에 λŒ€ν•΄ μ•”/λ³΅ν˜Έν™”λ₯Ό ν–ˆλ‹€λŠ” 것 μžμ²΄κ°€ 데이터에 λŒ€ν•œ μ§ˆμ˜κ°€ ν•¨λΆ€λ‘œ λ°œμƒν•΄μ„  μ•ˆλ˜λŠ” κ±Έ μ˜λ―Έν•˜κΈ°λ„ ν•΄μ„œ 가급적이면 μ½”λ“œλ‘œ μ‘°νšŒλ˜λ„λ‘ ꡬ성이 λ˜μ•Ό ν•˜μ§€ μ•Šμ„κΉŒ μƒκ°λ©λ‹ˆλ‹€.
  • μ„œμš©ν˜„ λ‹˜ @zjdtm
    • 1
    • 2 : 이뢀뢄은 사싀 정닡이 μ—†λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”κ°€ (μ–΄λ””μ—μ„œ ν•΄λ‹Ή 값을 λΉΌμ„œ μ‚¬μš©ν•˜λŠ”κ°€) 에 따라 λ‹¬λΌμ§€λŠ” λ¬Έμ œλΌμ„œμš”. ν˜‘μ˜μ˜ μ˜μ—­μ΄λΌ μƒκ°ν•˜μ‹œλ©΄ 쒋을것 κ°™μŠ΅λ‹ˆλ‹€.
    • 3 : μ²˜λ¦¬μ— λŒ€ν•œ 관심사λ₯Ό κ΅¬λΆ„ν–ˆλ‹€κ³  μƒκ°ν•˜μ‹œλ©΄ 쒋을것 κ°™μŠ΅λ‹ˆλ‹€. Controllerλ ˆλ²¨μ—μ„œ validation 처리λ₯Ό ν•΄μ„œ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€λ©΄ ν•΄λ‹Ή μ˜ˆμ™Έλ₯Ό GlobalExceptionHandlerμ—μ„œ μ²˜λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œμš”. μ§€κΈˆμ€ μ˜ˆμ™Έ μ²˜λ¦¬κ°€ λͺ‡κ°œ μ—†μ–΄ λ§μ”€ν•˜μ‹ λŒ€λ‘œ ν•˜λ‚˜μ˜ 처리λ₯Ό ꡬ지 μ—¬κΈ°μ„œ ν•΄μ•Όν•˜λ‚˜ λΌλŠ” 생각도 λ“œμ‹€μˆ˜ μžˆκ² μ§€λ§Œ κ΄€μ‹¬μ‚¬μ˜ λΆ„λ¦¬λ‘œ λ³΄μ‹œλŠ”κ²Œ 쒋을것 κ°™μŠ΅λ‹ˆλ‹€.
    • 4 : 객체지ν–₯적으둜 μƒκ°ν•˜μ‹œλ©΄ 쒋을것 κ°™μŠ΅λ‹ˆλ‹€. 둜그인 κ΄€λ ¨λœ 둜직이 mvcλ ˆμ΄μ–΄μ— μžˆλŠ”κ²ƒκ³Ό λ³„λ„μ˜ λ ˆμ΄μ–΄ ( security, filter)에 μžˆλŠ”κ²ƒμ˜ μ°¨μ΄μš”. controllerλŠ” μš”μ²­μ„ λ°›κ³  μ „λ‹¬ν•˜λŠ” λ ˆμ΄μ–΄μΈλ° 여기에 λ‘œκ·ΈμΈμ΄λΌλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 ν•¨κ»˜ μžˆλŠ”κ²Œ 썩 보기엔 μ’‹μ§€ μ•Šμ„κ²ƒ κ°™μ•„μš”. (λ¬Όλ‘  ν•„ν„°λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ΄λŸ°μ‹μœΌλ‘œ 직접 둜그인 처리λ₯Ό ν• μˆ˜λ°–μ— μ—†κ² μ§€λ§Œ ν”„λ ˆμž„μ›Œν¬μ˜ 각 λ ˆμ΄μ–΄μ— λŒ€ν•œ 고민을 해봐도 쒋을것 κ°™μ•„μš”.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

question Further information is requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants