- 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)가 발생함을 확인하였다.
'Front-End > React' 카테고리의 다른 글
[React] 블로그 만들기 9 - 로그아웃 구현 , posts에 회원 인증 API 적용 (0) | 2022.03.15 |
---|---|
[React] 블로그 만들기 8 - 토큰 발급 및 검증 (0) | 2022.03.15 |
[React] 블로그 만들기 6 - 회원가입 구현 (0) | 2022.03.15 |
[React] 블로그 만들기 5 - 페이지네이션 구현 (0) | 2022.03.14 |
[React] 블로그 만들기 4 - Request Body 검증 (0) | 2022.03.14 |