안녕하세요
MongoDB - 중복ID체크, ID/Password 유효성 검사 본문
1. 회원가입할 때 아이디 중복체크
app.post("/register", (요청, 응답) => {
db.collection("login").findOne({ id: 요청.body.id }, (에러, 결과) => {
db.collection("login").findOne({ id: 요청.body.id }, (에러, 결과) => {
=> 아이디가 있는지 찾아서, 있으면 이거 실행
if (결과) {
응답.redirect("/login");
=> 없으면 이거 실행
} else {
db.collection("login").insertOne({ id: 요청.body.id, pw: 요청.body.password }, (에러, 결과) => {
응답.redirect("/");
});
}
});
});
2. ID, Password 유효성 검사 (HTML도 하고 server도 해야함)
SERVER. 요청받은 데이터의 유효성을 검사하여 응답하도록 합니다.
// 아이디 유효성 검사
const checkId = /^[a-zA-Z0-9]{4,20}$/;
if (!checkId.test(요청.body.id)) {
console.log("아디 4~20 자리의 영문자또는 숫자");
return 응답.redirect("/login");
}
// 비밀번호 유효성 검사
const checkPassword = /^[a-zA-Z0-9]{4,20}$/;
if (!checkPassword.test(요청.body.password)) {
console.log("비번 4~20 자리의 영문자또는 숫자");
return 응답.redirect("/login");
}
HTML5. input 태그에 입력 방지 기능을 추가합니다.
첫번째. 정규식을 이용한검사 pattern="RegExp"
pattern="" 안에 //를 제외한 정규식을 입력하면 됩니다.
<input type="text" class="form-control" name="id" pattern="^[a-zA-Z0-9]{4,20}$" />
=> 하지만 이 경우에는 제출 시 검사를 해줄 뿐입니다.
=> 빈 칸일 경우에는 작업이 처리가 되지 않습니다.
두번째. input 태그 기능 required
위의 빈 칸 문제를 해결하려면 required를 입력해 빈 칸일 때 알림 창을 나타나게 합니다.
<input type="text" class="form-control" name="id" pattern="^[a-zA-Z0-9]{4,20}$" required />
세번째. input 태그 기능 maxlength=""
20자가 넘어가면 아예 입력을 못하게 합니다.
<input type="text" class="form-control" name="id" pattern="^[a-zA-Z0-9]{4,20}$" required maxlength="20" />
네번째. JavaScript Event Handler (직접 코드 짜기)
onclick onKeyUp onChange 등의 이벤트를 이용하여 입력된 문자의 유효성을 직접 검증하여
잘못된 문자열이 포함된 input을 포커싱을 하도록 하거나,
유효하지 않은 문자를 replace 로 제거하거나,
아예 입력도 되지 않도록 하는 등
직접 기능을 구현합시다.
3. password 암호화하기
if (입력한비번 == 결과.password) {
그런데 이렇게 비밀번호를 있는 그대로 DB에 저장하면...
DB에 password를 있는 그대로 저장했다가 해킹을 당하거나,
DB관리자가 악용을 할 수도 있지 않겠습니까?
다른 사이트에도 동일한 password를 사용하는 유저들의 피해가 커지게 됩니다.
따라서 DB에 저장할 때 password를 암호화하여 저장해서 아무도 모르게 하고,
암호화된 password와 같은지 비교하도록 하는 것이 좋은 방법입니다.
(지금 할 줄 모름)
'스터디 > 코딩애플' 카테고리의 다른 글
MongoDB - Express Router 라우터 만들기 (0) | 2023.01.07 |
---|---|
MongoDB - 에러: Cannot set headers after they are sent to the client (0) | 2023.01.06 |
MongoDB - 회원기능 게시물 작성자만 삭제하기 (0) | 2023.01.06 |
MongoDB - Search Index: 이진탐색으로 게시물 찾기 (0) | 2023.01.06 |
MongoDB - Query String 으로 검색기능 구현 (0) | 2023.01.06 |