23.3.2 로그인 구현하기

    이번에는 로그인 기능을 구현해 봅시다. login 함수를 다음과 같이 작성합니다.

    src/api/auth/auth.ctrl.js - login

    /*
      POST /api/auth/login
      {
        username: 'velopert',
        password: 'mypass123'
      }
    */
    export const login = async ctx => {
      const { username, password } = ctx.request.body;
    
      // username, password 없으면 에러 처리
      if (!username || !password) {
        ctx.status = 401; // Unauthorized
        return;
      }
    
      try {
        const user = await User.findByUsername(username);
        // 계정이 존재하지 않으면 에러 처리
        if (!user) {
          ctx.status = 401;
          return;
        }
        const valid = await user.checkPassword(password);
        // 잘못된 비밀번호
        if (!valid) {
          ctx.status = 401;
          return;
        }
        ctx.body = user.serialize();
      } catch (e) {
        ctx.throw(500, e);
      }
    };

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