정리가 필요한 게시글
yarn add next-auth
로그인, 회원가입, 로그아웃 기능 구현해보기
사용자 정보를 갖고오기 위해 mongodb 설치
사용자의 비밀번호를 DB에 저장할땐 암호화된 문자로 저장해야됨
암호화를 도와주는 yarn add bcryptjs
설치
bcryptjs사용법, 암호화 방법
import { hash } from "bcryptjs";
export async function hashPassword(password) {
const hashPassword = await hash(password, 12);
return hashPassword;
}
hash를 import 해주고 매개변수로 받은 password를 hash함수의 인자로 넣어 12자리로 암호화된 값을 return해준다
import { hashPassword } from "@/lib/auth";
const { email, password } = req.body;
const hashedPassword = await hashPassword(password);
db.collection("users").insertOne({
email: email,
password: hashedPassword,
});
hashPassword함수를 비동기로 호출해주고 body로 받은 password값을 인자로 넣어준다.
hashedPassword변수에는 암호화된 password값이 할당된다.
유저 정보를 저장할때 이미 가입되어있는 이메일이라면?
const existingUser = await db.collection("users").findOne({ email: email });
if (existingUser) {
res.status(422).json({ message: "already signup" });
client.close();
return;
}
users collection에서 email의 value가 입력한 email과 동일한 데이터가 나오지 않는다면 undefind를 반환할것이다.
조건문을 추가해 만약 있으면 return을 해주어 뒤에있는 db에 singup정보를 추가하는 로직이 실행되지 않게 해준다.