JWT 로그인 하기(1)

핸드폰에 JWT 저장 하는 위치와 Spring REST Docs 을 활용한 API 문서 확인
HootJem's avatar
Oct 15, 2024
JWT 로그인 하기(1)

1. JWT 저장 위치

JWT 는 핸드폰의 하드와 메모리에 저장한다. 이는 핸드폰이 서버와 연결할 때 (통신) 메모리에 있는 토큰에 접근하기가 쉽기 때문이다.
 
메모리에 있는 토큰은 앱 종료시 사라진다. 그러나 다음번 앱 접속 시 하드의 토큰을 확인하여 계속 로그인이 유지되거나, 로그인이 해제된다.
 

1-1. JWT 확인

notion image
notion image
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpbWdVcmwiOiIvaW1hZ2VzLzEucG5nIiwic3ViIjoibWV0YWNvZGluZyIsImlkIjoxLCJleHAiOjE3MjkxMzMwNzksInVzZXJuYW1lIjoic3NhciJ9.WDrMaEzu53ndfUzsU0wvXYba_Hei5GfyS3av8qgTDaNkfrz04VboUrgWXm9kj-RIqba6lBHmg8JoyH0eC3xdjg
 

2. 테스트 코드

@Test public void join_test() throws Exception { String fakeBase64Image = "data:image/jpg;base64," + RandomStringUtils.randomAlphanumeric(1000); UserRequest.JoinDTO joinDTO = new UserRequest.JoinDTO(); joinDTO.setUsername("hello"); joinDTO.setPassword("1234"); joinDTO.setEmail("hello@nate.com"); joinDTO.setImgBase64(fakeBase64Image); String requestBody = om.writeValueAsString(joinDTO); System.out.println(requestBody); ResultActions resultActions = mvc.perform( post("/join").content(requestBody).contentType(MediaType.APPLICATION_JSON) ); // console String responseBody = resultActions.andReturn().getResponse().getContentAsString(); System.out.println("테스트 : " + responseBody); // verify resultActions.andExpect(jsonPath("$.success").value("true")); resultActions.andExpect(jsonPath("$.response.id").value(4)); resultActions.andExpect(jsonPath("$.response.username").value("hello")); resultActions.andExpect(jsonPath("$.response.imgUrl").value(Matchers.endsWith(".jpg"))); resultActions.andExpect(jsonPath("$.status").value(200)); resultActions.andExpect(jsonPath("$.errorMessage").isEmpty()); resultActions.andDo(MockMvcResultHandlers.print()); resultActions.andDo(document); }
  • SpringBootTest 가짜 서버에 띄워서 전체 점증하는 어노테이션. Mock 이라는 가상의 서버에 들어있다.
  • $ → 중괄호 최상단. 을 의미한다.
  • restdocs 은 통합 테스트 코드를 넣으면 기존 코드를 건들이지 않아도 api 문서가 나온다.
notion image
 
Share article

[HootJem] 개발 기록 블로그