개발 48

Promise 란?

비동기적인 상황에서 작업의 순서를 정해야할때 사용함 이벤트루프를 기반으로 함 js의 비동기 처리를 위한 것 pending, fulfilled, rejected의 세가지 상태중 하나를 가짐!! pending 에서 비동기처리 작업이 완료되면~ 1) fulfilled 로 전환돼서 결과값을 반환하거나 2) 오류 발생시 rejected 상태로 전환돼서 오류정보를 반환함 성공시(fulfilled 상태) then()을 실행하고 실패시(rejected 상태) catch()를 실행함. 또한 then()을 여러개 가질 수 있는데 위에서부터 순서대로 각 then()이 완료되면 그 다음 then()이 실행됨. 작업 순서의 가독성이 좋아짐!!~~ *promise.all()을 쓰면 promise.all()안에 있는 then()이..

개발/JavaScript 2023.03.25

JWT란? (로그인시 토큰 발행 과정)

클라이언트와 서버간의 인증정보를 안전하게 전달한다. JWT만들어지는 과정: 1) 토큰의 타입, 암호화 방법 정의 2) 토큰에 포함될 정보 담기 (사용자id, 권한 등) 3) 1,2의 내용을 모두 암호화 한 후 시크릿키 사용하여 생성 장- 서버에 저장하지 않으므로 서버 부하 줄어듬, 시크릿키 있어서 위조 불가능 단- 클라이언트에서 복호화 할 수 있어서 보안성 떨어짐 플젝때 작성했던 ... 로그인시 JWT발행 과정: 1) 로그인 성공시 서버에서 토큰 발행 후 클라이언트에 전달 2) 클라이언트가 토큰 저장하고 인증 필요할때마다 토큰값을 서버에 보냄 3) 서버에서 토큰 검증 후 요청값 클라이언트에게 반환

개발/JWT 2023.03.25

bcrypt (회원가입시 비밀번호 해싱)

입력값을 해시화 해주는 라이브러리. 같은 입력값에 대해선 항상 같은 해싱값을 반환함!! 해싱된 비밀번호를 다시 복호화 할 수 없는 단방향임. 플젝에서 회원가입 구현시 해싱했던 방법: 1)회원가입시, 받아온 pw를 해싱해 db에 저장함 2)로그인시 입력된 pw를 해싱함 3)db에서 회원가입때 저장된 해싱 pw를 꺼내옴 4)2와 3을 비교해서 일치하면 로그인 성공!

MongoDB와 MySQL의 차이와 선택 이유

솔직히 1차 플젝때는 부트캠프에서 mongoDB를 권장해줘서 써봄. 2차 플젝때는 mongoDB 외의 다른 DB를 경험해보고자 기업에서 많이 사용하는 MySQL을 선택함. mongoDB는 noSQL로 json기반의 구조를 가지고 있어 비교적 일관적이지 않고 유연함. 대용량의 데이터를 빠르게 처리하기 위해 사용. MySQL은 테이블을 사용하여 관계를 정의함. 데이터의 일관성이 필요할 때 사용. 간단한 프로젝트여서 많은 양의 db를 다뤄보지 못해 차이점을 몸소 느끼진 못한것 같음. MongoDB는 초반 db설계할때 속도가 잘 나서 편리했고 MySQL은 설계할땐 시간이 오래걸렸지만 데이터를 처리할때 편리했다.

개발/DB 2023.03.25