Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 계정 관련 예외처리 #203

Merged
merged 10 commits into from
Jan 11, 2024
Merged

feat: 계정 관련 예외처리 #203

merged 10 commits into from
Jan 11, 2024

Conversation

kimday0326
Copy link
Member

@kimday0326 kimday0326 commented Jan 10, 2024

구현 기능

  • 카카오 이메일로 일반 로그인 시도 시 에러 응답
  • 카카오 계정은 비밀번호 변경 요청 불가능
  • 수정 시 null check : 요청에 null값 들어오면 업데이트에서 제외
  • 탈퇴한 계정은 모든 요청을 할 수 없도록 처리 (복구 제외)
  • redis 관련 설정들 core-domain으로 이동

테스트 흐름

  1. 회원가입/로그인 (토큰 A 발급)
  2. 토큰 A를 이용해 회원탈퇴 -> 토큰 A를 차단하여 권한이 남아있는 토큰 A를 이용해 접근하는 걸 막음
  3. 탈퇴한 회원이 로그인 시도 (토큰 B 발급)
  4. 발급된 토큰 B로는 회원 복구 요청만 가능, 이 외의 요청은 차단됨

예외처리 세분화 실패

  • 기존에 적용하려 했던 예외처리
1. JwtTokenProvider 에서 예외 발생
2. JwtAuthenticationFilter 에서 SecurityCustomException 캐치
3. JwtAuthenticationEntryPoint 에서 request.getAttribute("authority-expired") 이면 401 TOKEN_WITHOUT_AUTHORITY 발생

[실패 이유]

  • Provider에서 예외를 발생 시키면 권한이 없는 토큰도 anonymous user 처리됨
    -> UsernamePasswordAuthenticationToken을 authentication으로 가지지 못함
    -> 인증되지 않은 사용자로 처리됨 (제대로 동작하려면 인증은 되었으나 권한 없는 사용자가 되어야 함)
  • 다른 도메인에서 발생한 문제로 Resolver에 추가한 instanseOf 구문에서 다시 예외 발생 😭

실패한 코드는 member/tmp에 강제로 푸시해두었고, 우선은 예외처리는 묶어서 하고 차차 방법을 찾아보겠습니다...

Redis config로 인한 빌드 오류

  • redis repository를 api / security 양쪽에서 사용하기 위해 core-domain으로 옮기는 과정에서 booking쪽 config와의 충돌이 발생
  • booking쪽의 RedisConfig를 core-domain쪽으로 통합하였고, 테스트가 전부 잘 돌아가는 것을 확인했습니다.
  • 위치가 애매해서 우선 최상단으로 빼놓았는데, config 패키지를 하나 만드는게 나을까요?

resolve: #163

@kimday0326 kimday0326 added feature 기능 member 회원 labels Jan 10, 2024
@kimday0326 kimday0326 requested a review from eunbc January 10, 2024 08:12
@kimday0326 kimday0326 self-assigned this Jan 10, 2024
@eunbc
Copy link
Collaborator

eunbc commented Jan 10, 2024

이런 플로우는 어떨까요?

  1. 회원가입/로그인 (토큰 A 발급)
  2. 토큰 A를 이용해 회원탈퇴 -> 토큰 A를 차단하여 권한이 남아있는 토큰 A를 이용해 접근하는 걸 막음
  3. 탈퇴한 회원이 로그인 시도 -> 토큰 발급 x, 휴면 계정입니다
  4. 본인인증을 통한 휴면 해제 → member의 role이 다시 ROLE_USER로 바뀜, status -> ACTIVE
  5. 로그인 시도, 로그인 성공(토큰 B 발급)

참고 ) 네이버 휴면 해제

https://help.naver.com/service/5640/contents/1856?lang=ko

@byulcode
Copy link
Collaborator

redisConfig파일을 core-domain보다 core-infra/config 폴더에 넣는게 좋을것 같아요!

@kimday0326 kimday0326 merged commit 379c736 into main Jan 11, 2024
1 check passed
@kimday0326 kimday0326 deleted the member/163 branch January 11, 2024 01:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 기능 member 회원
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

feat: 계정 관련 예외처리
3 participants