금일 달성 항목
1) 로그인, 회원가입, 구현
2) ERD Model 수정
문제 해결 과정 1 - 패스워드 인증 확인
[문제]
if (!user || password !== user.password) {
return { code: 412, data: "닉네임 또는 패스워드를 확인해주세요." };
}
위 부분에서 걸려 로그인이 구현되지 않는 이슈가 있었습니다.
user.service.js
logIn = async ({ nickname, password }) => {
const user = await this.usersRepository.findNickname({ nickname });
if (!user || password !== user.password) {
return { code: 412, data: "닉네임 또는 패스워드를 확인해주세요." };
}
try {
const token = jwt.sign(
{
userId: user.userId,
},
process.env.JWT_SECRET_KEY
);
return { code: 200, data: "로그인에 성공하였습니다.", token };
} catch (error) {
return { code: 400, data: "로그인에 실패하였습니다." };
}
};
[시도]
console.log로 들어오는 데이터들을 모두 확인해보았는데 잘들어오고 있어서 데이터를 불러오는거에는 이상이 없었습니다.
[해결]
튜터님께 여쭤봐서 확인해보니
console.log(!user);
console.log(password);
console.log(user.password);
console.log(!user || password);
!user 부분이 false가 나오고 있었습니다.
npm bcrypt에 들어가서 checkpassward를 참고하여 변형하니
false가 true로 만들었습니다.
// 1. 비동기를 콜백함수를 통해 처리하는 방법
const checkPasswor1 = bcrypt.compare(password, user.password, function (err, result) {
// return result;
console.log(result);
});
// 2. 비동기를 async await으로 처리하는 방법
const checkPassword = await bcrypt.compare(password, user.password);
// await를 통해서 bcrypt.compare가 10초가 걸린다 하면 10초를 기다린 후에 다음 로직을 실행한다
console.log(checkPassword);
// qwer1234 !== $2b$10$hqMo9JJqtYYv9qL/fWGo9OhuCS0mJPJdebW4HyU9JNjWqcnHRNMoC
if (!user || checkPassword) {
return { code: 412, data: '이메일 또는 패스워드를 확인해주세요.' };
}
[알게된 점]
디버깅하는 방식을 좀 더 공부하고, 공식문서를 많이 찾아보아야 할 것 같습니다.
'혼자 고민해보기_ 개발 > TIL (Today I Learned)' 카테고리의 다른 글
20230810(목)_ 트렐로 프로젝트 진행 (0) | 2023.08.14 |
---|---|
20230809(수)_ 트렐로 프로젝트 진행 (0) | 2023.08.09 |
20230807(월)_ 트렐로 프로젝트 진행 (0) | 2023.08.07 |
20230804(금)_ nest js 공부 (0) | 2023.08.06 |
20230803(목)_ nest js 공부 (0) | 2023.08.05 |