잡다한 사전

(2023.11.09) 회원가입 API 만들기(유효성 검사) 본문

프로그래밍 언어/node.js

(2023.11.09) 회원가입 API 만들기(유효성 검사)

잡사전집사 2023. 11. 10. 08:52
반응형

회원가입 휴효성 검사를 하는 것을 만들어 보겠습니다.

 

조건

1. password와 confirmPassword에 입력한 비밀번호가 같아야합니다. 

2. DB에서 이메일과 닉네임을 이미 사용하고 있으면 안됩니다.

3. 닉네임은 최소 3자 이상, 알파벳 대소문자, 숫자로 구성되어 있어야 합니다.

4. 비밀번호는 최소 4자 이상, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들어야 합니다.

 

1. 비밀번호 확인 기능

if (password !== confirmPassword) {
    res.status(400).json({
      errorMessage: "패스워드가 패스워드 확인란과 다릅니다.",
    });
    return;
  }

password와 confirmPassword는 req.body에서 가져와서 입력받은 값이 동일하지 않을 시 "패스워드가 확인란과 다르다"는 문구를 뜨윕니다. 정상적은 같은 경우 정상적으로 진행 됩니다.

 

2. email과 nickname이 동일한 데이터가 있는지 확인하기

  const existsUsers = await User.findOne({
    $or: [{ email }, { nickname }],
  });
  if (existsUsers) {
    // NOTE: 보안을 위해 인증 메세지는 자세히 설명하지 않습니다.
    res.status(400).json({
      errorMessage: "이메일 또는 닉네임이 이미 사용중입니다.",
    });
    return;
  }

email과 nickname이 DB에 동일한 것이 있는지 확인하기 위해 findOne()함수를 이용하여 입력받은 email과 nickname을 이용하여 데이터베이스를 가져온후 if문을 이용하여 존재하는지 확인을 합니다. 이 때 DB에 이미 존재하는 경우 "사용중입니다."라는 문구를 띄웁니다.

 

3. 닉네임 생성 조건 && 비밀번호 생성 조건

const user = new User({ email, nickname, password });

  //닉네임 생성 조건
  var idRef = /^[a-zA-z0-9]{3,12}$/;
  var pwRef = /^[a-zA-z0-9]{4,12}$/;

  if (!idRef.test(nickname)) {
    res.status(400).send({
      errorMessage: "닉네임을 수정해주세요",
    });
    return false;
  } else if (!pwRef.test(password)) {
    res.status(400).send({
      errorMessage: "비밀번호는 영문 대소문자와 숫자 4~12자리를 입력해주세요!",
    });
    return false;
  } else if (nickname == password) {
    res.status(400).json({
      errorMessage: "닉네임과 비밀번호는 같을 수 없습니다.",
    });
    return false;
  } else {
    await user.save();
  }

 

user 부분을 만들어 준 이유는 confirmPassword는 입력한 값이 확인을 위한 용으로 DB에 저장되는 것은 email, nickname, password 3가지가 DB에 저장이 되기 때문이다. 

 

닉네임 생성 조건은 정규식을 이용하여 idRef 변수를 이용하여 넣어준 후 test함수를 이용하여 nickname값이 정해놓은 정규식이 아닐 시 
"닉네임을 수정해주세요"라는 문구를 띄우면 정상적으로 입력했을 시 비밀번호 정규식을 확인을ㄹ 하여 비밀번호가 정상적으로 들어갔는지 확인을 합니다.

마지막으로 비밀번호와 닉네임은 같을 수 없다는 조건을 완성하기 위해 req.body로 받은 password와 nickname 값이 같은 지 확인을 한 후 모든 조건에 부합하다면 DB에 저장되도록 만들었다.

 

만들면서 느낀점 

회원가입 유효성 검사에서 생각보다 많은 검사를 진행을 해야한다는 사실을 알았다. 

현재 만들어본 파일에서는 비밀번호와 닉네임과 이메일을 유효성을 검사하고 회원가입을 완료하면 되는 간단한 작업이였지만, 예를 들어 주민등록번호와 이외에 입력을 많이 받는 사이트인 경우 더 많은 유효성 검사와 확인이 필요하다는 사실을 알았다.

회원가입 API에 대해서 알 수 있는 작업이였다. 

반응형