inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹소켓/STOMP 채팅서비스(spring, vue, redis)

stomp jwt인증 처리

로컬 스토리지에 토큰 저장하는 방식 질문입니다!

155

열심인 참새

작성한 질문수 32

0

보통 토큰을 로컬 스토리지에 저장하나요?
그러면 명시적으로 로그아웃을 누르지 않는이상은
클라이언트가 로컬스토리지 비우는 방식을 사용해서 토큰을 초기화 하지는 않을 것 같은데
혹시 강의에서 로컬 스토리지 말고 쿠키 같은 것에 저장하는 내용이 뒤에서 나오나요?

안나온다면 어떤식으로 처리해야하나요?
서버에서 토큰을 내려보내줄때 쿠키에 담아서 내려보내주어야 하는건가요 ?

spring-boot websocket stomp-websocket pubsub vue-3

답변 2

0

bradkim

쿠키에 담아도 되고, 로컬스터리지에 저장해도 됩니다.

명시적으로 사용자가 삭제를 해야만 하는것은 아니고, 만약에 서버로 요청시에 토큰 만료 에러가 날경우에 프론트엔드에서 401을 catch하여 로컬스토리지를 비우는 코드를 프론트에서 많이 사용합니다. 아래 코드를 참고해 보세요~ 에러를 인터셉팅하는 코드입니다.

main.js 코드 예시)



axios.interceptors.response.use(
    response => response,
    async error => {
        if(error.response && error.response.status === 401 ){
                localStorage.clear();
                window.location.href = "/member/login";
        }
        return Promise.reject(error);
    }
)

 

0

열심인 참새

감사합니다~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 열심인 참새님.

웹 애플리케이션에서 토큰 저장 방식에 대한 고민은 보안과 사용성 측면에서 중요한 부분입니다. 토큰을 저장하는 방법에는 여러 가지가 있지만, 각각의 장단점이 있습니다. 질문해주신 로컬 스토리지와 쿠키를 이용한 방법에 대해 간단히 설명 드리겠습니다.

  1. 로컬 스토리지:

    • 장점: 간단히 사용 가능하고, 클라이언트 측에 키-값 쌍으로 데이터를 저장하여 서버 호출 없이도 접근 가능합니다.
    • 단점: 무차별 대입 공격과 같은 클라이언트 측 스크립트 공격에 상대적으로 취약합니다.
  2. 쿠키:

    • 장점: 쿠키는 HttpOnly 옵션을 통해 클라이언트 측 스크립트에서 접근하지 못하게 하여 보안성을 높일 수 있습니다.
    • 단점: 쿠키 사이즈 제한이 있으며, 서버 로드에 영향을 미칠 수 있습니다.
    • 만약 쿠키를 사용하는 방법을 검토하신다면, 서버에서 로그인 성공 시 토큰을 쿠키로 설정하여 클라이언트로 전달하는 방식이 일반적입니다.

강의에서 쿠키를 통한 토큰 관리가 다뤄지지 않는다면, 토큰을 관리하는 방식은 여러분의 애플리케이션의 요구사항에 맞춰 선택하시면 됩니다. 쿠키를 사용할 경우, HttpOnly 옵션과 Secure 옵션을 설정하는 것을 고려해 보안을 강화하는 것이 좋습니다.

제가 추천하는 관련 질문 링크에서 더 많은 정보와 설명을 확인해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ERD 질문

0

54

2

StompHandler 관한 질문

0

80

2

리프레시 토큰은 알아서 구현하면 되는건가요??

0

79

2

cors, csrf 직접 구현

0

64

1

JWT 필터구현

0

98

2

강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?

0

57

1

STOMP 동작 과정 질문

0

48

1

chain.doFilter()

0

45

1

자바 21로 소스 작성해도 되나요?

0

60

2

메시지 브로커 선택에 관한 질문

0

65

2

WebSocket과 Spring Security 질문

0

81

2

추가 커스텀 구현 질문 있습니다.

0

59

2

connect와 동시에 구독하는데 구독 검증이 꼭 필요한가요?

0

97

2

저도 동일한 질문인데

0

78

3

token이 필요한 엔드포인트에 의도적으로 토큰 누락시 대처

0

67

2

수업자료가 왜 다 나눠져있나요?

0

78

2

메시지 전송 시 검증

0

61

2

JWT 생성 시 subject 설정에 대한 질문

0

157

3

StompHandler 질문 있습니다.

0

82

2

앱 서비스일 경우

0

83

2

웹소켓 서버 재배포시 고려해야 할 상황 질문

0

107

2

배포 오류 질문

0

123

2

/connect 경로에 대한 토큰 검증의 필요성

0

77

1

JwtTokenProvider 작성중 오류 발생으로 문의드립니다.

0

96

2