Auth

Zain·2023년 4월 27일
0

정리가 필요한 게시글

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정보를 추가하는 로직이 실행되지 않게 해준다.

profile
JSON 상하차 마스터 | Vue & Laravel | JS, PHP

0개의 댓글