📝Day79-80 (53-54)일차 WE_MOTIVATION_DIARY

김민재·2021년 10월 11일
0

빡코딩 다이어리

목록 보기
77/87
post-thumbnail

- TODAY I LEARN ERROR 🦠

  • 구조분해의 대상이 객체나 배열이 아닐 때 나는 에러로 undefined시에 저런 에러 문구가뜬다.
<script>
//Uncought TypeError: Invalid attempt to destructure non-iterable instance
</script>

- HOW TO FIX MY ERROR 💊

    1. 구조분해 할당 하는 대상이 객체인지 배열🔑인지 확인하기
    1. undefined상태일 때 예외 처리🔑 해주기
<script>
const signInUser = async (email, password) => {
  const [userInfo] = await signInDao.getUserInfo(email);
  if (userInfo === undefined) {
    // 이메일이 유효하지 않은 경우
    const error = new Error('INVALID EMAIL');
    error.message = '유효하지 않은 이메일입니다.';
    error.statusCode = 403;
    throw error;
  }
  const validHashedPsw = await bcrypt.compare(password, userInfo.password);
  if (!validHashedPsw) {
    // 잘못된 비밀번호 경우
    const error = new Error('INVALID_PASSWORD');
    error.message = '잘못된  비밀번호입니다.';
    error.statusCode = 403;
    throw error;
  } else {
    // 비밀번호 + 이메일 맞는 경우
    const accessToken = jwt.sign(
      { id: userInfo.id },
      process.env.ACCESS_TOKEN_SECRET_KEY,
      {
        expiresIn: '1h',
      }
    );
    return accessToken;
  }
};
</script>

- 모르는 점

  • jwt의 sign, verfy는 인자에 따라 동기/ 비동기 처리가 다르게 동작한다는 점에 대해서
  • 발급받은 jwt 저장할 수 있는 다양한 저장 공간, session/cookies 등에 대해서
  • auth middleware에 대해서

- 배운점

    1. 사용자 정보를 토대로 암호화 토큰 생성하는 메서드
      jwt.sign(payload, secretOrPrivateKey, [options, callback])
  • payload : 객체 리터럴, 버퍼 또는 유효한 JSON을 나타내는 문자열. 유저 정보를 넣어준다.
  • secretOrPrivateKey(두 번째 인자) : 비밀 키 전달
  • options(세 번째 인자) : 토큰에 대한 정보를 객체로 전달
  • callback(네 번째 인자) : 콜백함수 작성. 만약 콜백 함수를 작성하지 않으면 동기 처리가 된다.
    1. 암호화된 토큰을 해싱하여 권한을 확인하는 메서드
      jwt.verify(token, secretOrPublicKey, [options, callback])
  • token(첫 번째 인자) : 토큰 값을 전달해, 인증이 된 유효한 토큰인지 확인
  • secretOrPublicKey(두 번째 인자) : 토큰 생성 시에 사용한 비밀 키를 디코딩에 똑같이 사용된다.
  • callback(네 번째 인자) : 콜백함수 유무에 따라 비동기, 동기로 동작한다.

- 잘한 점과 개선할 점

  • 비록 밀렸지만 회고록 작성을 계속 지속하려한 점 GOOD~
  • 앞으로 벡엔드하면서 더 바빠질 거 같으니 내가 만난 에러들 틈틈이 벨로그에 미리미리 기록하는 습관을 기르자!

- 목표와 마감기한: 2021-10-11

  1. auth 미들웨어 만들기
  2. token 저장하는 방식 정해서 인가 처리 해보기
  3. represh token 개념 찾아보기
profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

2개의 댓글

comment-user-thumbnail
2021년 10월 16일

오늘의 명언 제가 참 좋아하는 말이네요 :)

1개의 답글