간단한 로그인&회원가입 기능 구현(5)
이제 회원가입에서 비밀번호를 암호화했으니 로그인에서 그 비밀번호를 받아와야합니다.
코드를 보면 bcrypt.compareSync라는 메서드가 보이실 겁니다.
보시면 비교할 data와 hash로 바꾸어져있는 data를 비교해 맞다면 true값을 아니라면 false값을 반환한다라고 되어있습니다.
.env
git에 올릴때 database의 정보를 다 올리게 되면 계정이 root인 경우 database의 비밀번호를 통채로 주는 셈이 되버립니다.
그래서 환경변수를 담는 .env파일을 만들어 root 디렉터리에 넣어줍니다.
처음으로 env파일을 사용하기위해 모듈인 dotenv를 install해줍니다.
npm install dotenv
package.json에 들어온 걸 확인한 후에
dbConfig.js에 위 사진처럼 require("dotenv").config();로 require해줍니다.
여기서 환경변수를 적는법
DB_USER= 유저이름
DB_PASS= 비밀번호
DB_HOST= 호스트이름
key=value 값 형식으로 넣어주어야합니다.
이 부분에서 저는 3시간이나..헤맸는데 .env의 파일에 db.env처럼 이름을 넣어줬다면
config(path: {위치}); 를 넣어줘야합니다...
그래서 가장 편하게 하는법은 이름을 정해주지 않고 .env로 지정하는 것이 좋을 것 같아요ㅠㅠㅠㅠ
여기서 가장 중요한 점은!!
git에 database의 url과 비밀번호를 안올리기 위해서 만들어준 파일이기 때문에 .gitignore파일에 .env를 적어주어야 적용이 됩니다.
애초에 git에 저장소를 만들 때 .gitignore을 node로 설정해주는 것도 좋은 방법인 것 같습니다.
비밀번호 규칙
평소 회원가입시에 보면 대소문자포함 숫자포함 같은 규칙이 있습니다.
저도 한번 해보았습니다.
signup.js에 정규표현식을 이용해 구현해보았습니다.
(?=.*[a-z]) : a부터 z까지 문자 최소 1개
(?=.*[A-Z]) : A부터 Z까지 문자 최소 1개
(?=.*[0-9]) : 0부터 9까지 숫자 최소 1개
그다음 실행하기 전 비밀번호 체크하는 함수를 먼저 실행해서 규칙에 해당이 안된다면
alert를 띄우고 리턴값으로 비밀번호 입력창만 초기화를 합니다.