공부하기/React

[React] 블로그 만들기 7 - 로그인 구현

다섯자두 2022. 3. 15. 16:28

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

export const login = async (ctx) => {
  // 로그인
  const { username , password } = ctx.request.body;

  // username, password 없으면 에러 처리
  if(!username || !password) {
    ctx.status = 401;
    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);
  }
};

1) username, password 값이 제대로 전달되지 않은 경우 -> 에러처리

2) static 함수인 findByUsername를 통해 사용자 검색

-> 존재하지 않을 경우 -> 에러처리

3) instance 함수인 checkPassword를 통해 비밀번호 일치 확인

-> 일치하지 않을 경우 -> 에러처리

4) 로그인 성공

 

 

 

- Postman

로그인 테스팅

테스팅 결과 성공적으로 로그인이 완료됨을 확인하였다.

 

로그인 (비밀번호 비일치) 테스팅
로그인 (존재하지 않는 계정) 테스팅

비밀번호가 일치하지 않는 케이스의 경우와 존재하지 않는 계정명으로 로그인을 시도한 경우 모두 401에러 (Unauthorized)가 발생함을 확인하였다.