개발자
SecurityConfig에서 .requestMatchers(HttpMethod.GET, "/boards/*/comments").permitAll() 이런 식으로 허용을 해주고 JwtAuthorizationFilter에서 accessToken이 유효하지 않으면 response에 토큰에 문제가 생겼다는 에러 메세지를 리턴을 하게 해뒀습니다. GET /boards/*/comments 요청을 보내면 해당 게시물의 댓글들을 조회를 해올 때 좋아요를 누른 상태인지 누르지 않은 상태인지 구분을 할때 문제가 생겼습니다. 로그인을 한 사용자는 댓글들을 조회할 때 좋아요를 눌렀나 안눌렀나 확인을 해야하고 로그인을 하지 않은 사용자는 무조건 좋아요를 안 누른 상태로 해야되는데 JwtAuthorizationFilter에서 에러 메세지를 리턴을 하되면 로그인을 해야지만 조회가 되는 문제가 생기고 JwtAuthorizationFilter에서 에러 메세지를 리턴하는 코드를 빼자니 모든 Controller쪽에서 null체크를 해줘야 하고... 감을 못잡겠습니다ㅜ_ㅜ
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 08월 02일
JwtAuthorizationFilter에서 token 유효성 검사를 수행하는 이유는 보안상의 이유 때문입니다. 단순히 로그인 여부를 판단하기 위해서라면, JwtAuthorizationFilter에서 에러 메세지를 전송하는 대신 사용자가 로그인하지 않은 경우에만 null을 리턴하도록 조정할 수 있습니다. 또한, comment 객체에 새로운 필드를 추가하여 기본값을 '좋아요를 안 누름'으로 설정하는 것을 고려해 볼 수 있습니다. 이렇게 하면 사용자가 로그인하지 않은 경우 해당 필드는 기본값을 가집니다. 사용자가 로그인한 경우 해당 필드는 자동으로 갱신되므로 컨트롤러에서 null 확인을 할 필요가 없어집니다. 마지막으로, 좋아요 상태를 관리하는 별도의 서비스 레이어를 만들고, 그곳에서 JWT 토큰 유효성 체크나 null 확인 등의 작업을 수행하도록 하여 컨트롤러의 부담을 줄일 수도 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!