유효성 검사 vaildation
- 사용자가 입력한 값이 유효성(타당성)을 확인하는 것
- e.g. userId - not null, 숫자 등
express-validator 모듈
npm install express-validator
로 설치 후 사용 가능한 외부 모듈
const validate = (req, res, next) =>{
const err = validationResult(req)
if(!err.isEmpty()){
return res.status(400).json(err.array())
}else{
return next()
}
}
next()
- 다음 함수를 찾아감
→ 에러가 없으면 다음 함수로 이동하여 실행함
JWT (JSON Web Token)
- JSON 형태의 데이터를 안정하게 전송하기 위한 웹에서 사용하는 토큰
- = 토큰을 가진 사용자가 “증명”을 하기 위한 수단
- 토큰 ⇒ (인증용) 입장 가능한 유저 / (인가용)권리자 권한&일반 유저 권한
- 장점
- 보안에 강함, 암호화가 되어있음
- 서버가 상태를 저장하지 않음, Stateless(= HTTP 특징을 잘 따름)
- 서버에 부담을 덜 수 있음
- 토큰을 발행하는 서버를 따로 만들어줄 수도 있음
jwt.io
- Header
- 암호화할 때 사용된 알고리즘과 토큰 형태(타입: 기본적으로 jwt)
- Payload
- 사용자 정보, 권한이 담김 (JSON 형태), 비밀번호는 담지 않음
- Verify signature
- Header와 Payload를 내용을 보증(값에 대한 서명), Header나 Payload를 값이 변경하면 같이 변경됨( 서명값이 바뀌면 인증이 되지 않음)
JWT 토큰 발행
- iat(issued at) : 토큰 발행 시간 = 발행 시간마다 토큰 값이 다름
.env(enviroment : 환경 변수 설정 값)
- 개발 중, 포트 넘버, DB 계정, 암호키 등 유출되면 안되는 중요한 환경 변수
- 프로젝트 최상위 위치에 있어야함
cookie-parser
- request에 있는 쿠키를 꺼내서 쓸 수 있게 도와주는 미들웨어
쿠키 설정 변경 httpOnly
- 프론트엔드가 아니라 API 호출만 허락
- true로 되어있으면 프론트가 아닌 HTTP로 접근 했을 때만 요청 받음
++클린코드
- 클린 코드의 관점 상 긍정문으로 조건을 제시해야함
- e.g. 밥 안드셨나요? 아니요 ⇒ 이중 부정 = 긍정
- 밥드셨나요? 네 = 긍정