[Project] spring security 탈퇴 및 계정 정지 회원의 로그인 차단
Categories: Project
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
신고 기능을 구현한 다음, 계정 정지된 회원과 탈퇴된 회원은 여전히 로그인도 되고 활동도 가능하다.
예전에 게시판 할 때는 회원의 상태를 보고 서비스 계층에서 회원의 상태에 따라 접근을 막았는데
지금은 그때처럼 관리자냐 회원이냐가 아니라 로그인을 막는 것이 상황이 가장 적절하기도 해서 Security를 개선하기로 했다.
Authentication
이 성공했을 때, 회원의 상태를 체크하고, 상태가 ‘정지’나 ‘탈퇴’인 경우 예외를 던지도록 했다.
이렇게 하면 불필요하게 서비스 계층에서 일일이 확인할 필요 없이,
로그인 단계에서 차단할 수 있다.
Exception class 추가
추상화 된 AuthenticationException
를 상속하여 예외 클래스를 생성하였다.
-
SuspendedAccountException
-
WithdrawnAccountException
MemberAuthenticationSuccessHandler 클래스 에 기능 추가
그 다음 탈퇴나 계정 정지된 회원이 로그인 할 경우 위에서 만든 예외를 발생시킨다.
<img src=”https://github.com/user-attachments/assets/886036d4-fc0e-47f1-b92a-a52566232691”width=500/>
Authentication
이 성공했을 때 호출되는 핸들러에서 로그인한member
의 상태를 체크한다.- MemberStatus를 확인 후 정지상태나 탈퇴상태의 회원일 경우 예외를 던지도록 구현했다.
-
이렇게 하면 Auauthorized 만 나오기 때문에 로그인 실패와 동일한 에러가 발생한다. 조금 더 명확하게 메세지를 보내주는 것이 맞을 것 같아서 추가로 ErrorResponse 클래스를 활용하여 예외를 예쁘게 포장하기로 했다.
적용 결과
정지 회원
-
신고 승인
-
계정 정지 후 로그인
탈퇴 회원
-
탈퇴 전 로그인
-
탈퇴
-
탈퇴 후 로그인
이제 삭제된 회원은 로그인 시도부터 차단되고, 시스템에 접근할 수 없고 예외도 예쁘게 잘 나오고 처리도 잘된다.
Leave a comment