더북(TheBook)

21.5.4 인증이 필요한 API 보호

 

이번에는 포스트 읽기를 제외한 모든 작업을 로그인했을 때만 수행할 수 있도록 코드를 수정하겠습니다. 일반적으로 API의 컨트롤러 함수에서 ctx.session.logged 값이 true가 아니라면 작업을 중지하도록 구현합니다. 하지만 이런 코드를 write, update, remove 함수에 모두 작성하면 코드가 중복되겠죠?

따라서 post, delete, patch API 라우트에서 checkObjectId 함수를 사전 수행하게 했던 것처럼, checkLogin 함수를 만들어 API를 처리할 때 인증 상태를 확인한 후 작업을 계속 진행하도록 코드를 작성합시다.

우선 posts.ctrl.js 파일에 checkLogin 함수를 만드세요.

src/api/posts/posts.ctrl.js - checkLogin

exports.checkLogin = (ctx, next) => {
  if(!ctx.session.logged) {
    ctx.status = 401; // Unauthorized
    return null;
  }
  return next();
};

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.