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] 채팅 인가 방식 변경 #223

Closed
3 tasks
injae-348 opened this issue Nov 28, 2024 · 0 comments · Fixed by #235
Closed
3 tasks

[FEAT] 채팅 인가 방식 변경 #223

injae-348 opened this issue Nov 28, 2024 · 0 comments · Fixed by #235
Assignees
Labels
enhancement New feature or request

Comments

@injae-348
Copy link
Collaborator

injae-348 commented Nov 28, 2024

기능 요청

기능 설명 (필수)

Custom Principal 적용(java.security.Principal)
StompChannelInterceptor를 통한 본인 인증
ChatErrorHandler를 통한 인터셉터에서 발생하는 예외 처리

작업 상세 내용 (필수)

  • TODO: interceptor 작성
  • TODO: handler 작성
  • TODO: Principal 추가

참고자료

블로그의 경우 StompSubProtocolErrorHandler를 상속받아 만든 StompErrorHandler에서 MessageDeliveryException 혹은 지정한 다른 인가에 대한 예외, JWT에 대한 예외를 처리해주는데, BuddyBridge 에서는 해당 예외를 전부 RuntimeException을 상속한 BusinessException을 상속해 구현하였기에 예외 발생 시 StompSubProtocolErrorHandler를 상속한 ChatErrorHandler에서 getErrorCode() 메서드를 통해 가져왔습니다.

기본적으로 ChannelInterceptor에서 예외가 발생하면 MessageDeliveryException로 래핑되며 원본 예외는 cause로 저장됩니다.

블로그의 @MessageExceptionHandler 어노테이션을 통해 비즈니스 로직에 대한 검증 예외 처리를 수행하는데 비즈니스 예외에 대한 걸 전부 위에서 수행하고 ChatController에서 발생하는 예외도 ChatErrorHandler에서 처리하고 있어 만약, 적용한다면 어떻게 해야 좋을지 잘 모르겠습니다.

Blog
https://shout-to-my-mae.tistory.com/434#%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4%20%EB%A1%9C%EC%A7%81%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B2%80%EC%A6%9D%20%EC%98%88%EC%99%B8%20%EC%B2%98%EB%A6%AC-1

MessageDeliveryException Docs
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/messaging/MessageDeliveryException.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant