데블 아니고 데블리

운동,햄버거, 개발 좋아요

🐷💻📝

항해99 취업 리부트 코스 학습일지

[항해99 취업 리부트 코스 학습일지] 2024.03.22.(금)

데블아니고데블리 2024. 3. 22. 21:04

아오 오늘은 엄청나게 바빴어요..

그래도 일기장처럼 TIL을 쓰니까 좋습니다.

 

요약 : 오늘의 한일은 프로젝트 복습이다.

소감 : 내가짠 코드도 다시보자

 

===================================================

오늘 복습한 내용

1. 토큰방식 로그인 

토큰방식 로그인은 확장성이 뛰어나 사용합니다(세션은 한계가 있음) 큰 로직은 다음과 같아요..

 

로그인 ➡️ 앗 해당 유저가 있군 토큰을 발급하지 우히히히
➡️ 그리고 페이지를 로딩하거나 로그인이 필요한 요청일 경우 클라쪽에서 access code 를  포함하여 api를 요청합니다. ➡️ 토큰 유효성 검사 후 유효하면 그대로 진행, 만료되었으면 새로운 토큰을 발급 받습니다.
 

 

이런 간단한 로직이지만, 코드를 짜면 어마무시 하죠.. 토요일 세션 끝나고 좀 일찍 집에와서 작성을 해볼란다.. 지금은 노션 작성하기 바쁘다..

 

2. API 방식에 따른 반환 class 구현

최적화를 위해 jackson liberary 사용했어요.. 왜냐구요 ? 

....

String JSON = "\"{"+    "\"name\": \"" + member.getName() + "\","+    "\"job\": \"" + member.getRole() + "\""+ "}\"";

 

이렇게 json string 만들기 싫어서요..ㅋㅋ

 

그리고  @JsonInclude 사용해서 최적화 하기에 딱이라구욧

 

3. 결론 :  왜 사용하느냐 ? 최적화 위해서다. 

백엔드 같은 경우에는 메모리를 조금 더 효율적이게 사용하기 위해서고, 그 방법으로는

1. json 응답 클래스 만들어두기 :  null 값에 대한 처리를 해주어 메모리 절약

2. enum 사용하기 : 인스턴스 한번만 호출(static이랑 비슷함)하여 메모리 절약, 이상한 데이터 저장하지 않도록 함 

 

어제 생각해보니 트러블슈팅 작성하는게 어렵다 했는데 다 내경험인 것 같다.

예를 들어 로그인! 

진짜 로그인했다! 는 사용자 관점이고, 개발자 관점으로 뜯어보니까 jwt 사용하는데 jwt는 복호화가 너무 쉽게 되니까 중요한 정보를 담으면 안된다. 보안성에 대한 고민으로 refresh token을 사용했다. 그리고 실제 db에 저장될 때에도 암호화 시켜 저장하게끔 하여 crsf 공격을 예방 할 수 있도록 했다.. 등등 쓸 게 많네요

 

+) 사담 

내가 구현했던 로직 조금 더 고민해보고 트러블 슈팅 써봐야겠다 ㅋㅋㅋ 

오늘은 프로젝트 새로 빌드하고 테스트 하느라고 코테 못풀었음

 

이상입니다!

 

항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.

https://hanghae99.spartacodingclub.kr/reboot