개발자

spring security에서 JWT를 사용할 때 질문이 있습니다.

2024년 08월 02일조회 59

SecurityConfig에서 .requestMatchers(HttpMethod.GET, "/boards/*/comments").permitAll() 이런 식으로 허용을 해주고 JwtAuthorizationFilter에서 accessToken이 유효하지 않으면 response에 토큰에 문제가 생겼다는 에러 메세지를 리턴을 하게 해뒀습니다. GET /boards/*/comments 요청을 보내면 해당 게시물의 댓글들을 조회를 해올 때 좋아요를 누른 상태인지 누르지 않은 상태인지 구분을 할때 문제가 생겼습니다. 로그인을 한 사용자는 댓글들을 조회할 때 좋아요를 눌렀나 안눌렀나 확인을 해야하고 로그인을 하지 않은 사용자는 무조건 좋아요를 안 누른 상태로 해야되는데 JwtAuthorizationFilter에서 에러 메세지를 리턴을 하되면 로그인을 해야지만 조회가 되는 문제가 생기고 JwtAuthorizationFilter에서 에러 메세지를 리턴하는 코드를 빼자니 모든 Controller쪽에서 null체크를 해줘야 하고... 감을 못잡겠습니다ㅜ_ㅜ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

김인후님의 프로필 사진

비로그인자로 비로그인용 토큰을 관리하는 방법이나 비로그인자 전용 댓글 좋아요 api를 만드는 것도 괜찮지 않을까요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 08월 02일

JwtAuthorizationFilter에서 token 유효성 검사를 수행하는 이유는 보안상의 이유 때문입니다. 단순히 로그인 여부를 판단하기 위해서라면, JwtAuthorizationFilter에서 에러 메세지를 전송하는 대신 사용자가 로그인하지 않은 경우에만 null을 리턴하도록 조정할 수 있습니다. 또한, comment 객체에 새로운 필드를 추가하여 기본값을 '좋아요를 안 누름'으로 설정하는 것을 고려해 볼 수 있습니다. 이렇게 하면 사용자가 로그인하지 않은 경우 해당 필드는 기본값을 가집니다. 사용자가 로그인한 경우 해당 필드는 자동으로 갱신되므로 컨트롤러에서 null 확인을 할 필요가 없어집니다. 마지막으로, 좋아요 상태를 관리하는 별도의 서비스 레이어를 만들고, 그곳에서 JWT 토큰 유효성 체크나 null 확인 등의 작업을 수행하도록 하여 컨트롤러의 부담을 줄일 수도 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!