• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 node.js mongodb 암호화되어있는 비밀번호 변경/초기화

node.js mongodb 암호화되어있는 비밀번호 변경/초기화

7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 글쓴이
  • #72600

    이창민
    참가자
    안녕하세요 센세
    
    하기와같이 회원가입시 코드를 작성했는데욤
    업체당 업체당 1계정 부여하는 형식으로 만들어본건데
    
    고객입장에서 관리자한테 계정을 부여받고 비밀번호를 초기화해야되잖아요
    그래서 찾아보니까 nodemailer였나 쨋든 그걸 써야한다는데 이메일인증없이 비밀번호 초기화/변경 방법이 있을까요?
     
    
    
     
     
    #72627

    codingapple
    키 마스터
    그 사람이 그 이메일 소유주인지 맞는지 확인해야되는데 메일보내는거밖에 방법이 없는듯요 
    아니면 그냥 관리자가 수동으로 1234로 리셋시켜주거나 합시다
    #72646

    이창민
    참가자
    비밀번호 찾기와 같은 기능에서 사용하려면 
    같은지 다른지 비교 후 같으면 새로운 비밀번호를 설정하게해서 DB에 넣어주는 방법을 사용함.
    
    이메일을 사용하는게아니라 그냥 아이디를 사용하는거여서
    위방법으로해도 되는걸까요? 가능할까요??
    #72649

    이창민
    참가자
     
     
     
    쎈세 이녀석 믿어봐도 되는걸까요??
     
     
     
     
     
    이 코드에서는 사용자가 로그인할 때 입력한 비밀번호를 해싱하여 데이터베이스에 저장하고 있습니다. 사용자가 비밀번호를 변경하려면 다음과 같은 방법을 사용할 수 있습니다.
    사용자가 새로운 비밀번호를 입력합니다.
    입력한 비밀번호를 bcrypt를 사용하여 해싱합니다.
    데이터베이스에서 해당 사용자의 비밀번호를 변경합니다.
    이 과정은 다음과 같이 코드로 작성할 수 있습니다.
    javascriptCopy code
    // 사용자가 새로운 비밀번호를 입력한 후 제출한 경우
    app.post('/change-password', (req, res) => {
      const id = req.session.id; // 현재 로그인한 사용자의 ID
      const newPassword = req.body.newPassword; // 사용자가 입력한 새로운 비밀번호
      // 새로운 비밀번호를 해싱합니다.
      bcrypt.hash(newPassword, saltRounds, (err, hash) => {
        try {
          // 데이터베이스에서 해당 사용자의 정보를 업데이트합니다.
          db.collection("login").updateOne(
            { id: id },
            { $set: { pw: hash } },
            (error, result) => {
              if (error) {
                console.log("Error updating password: ", error);
                res.status(500).send("Internal Server Error");
              } else {
                res.redirect("/admin-user-list");
              }
            }
          );
        } catch {
          console.log("err: " + err);
        }
      });
    });
    이 코드에서는 app.post('/change-password', ...)를 사용하여 사용자가 새로운 비밀번호를 입력하고 제출할 때 호출됩니다. 이후, 입력한 새로운 비밀번호를 bcrypt.hash()를 사용하여 해싱합니다. 그리고 데이터베이스에서 해당 사용자의 비밀번호를 업데이트합니다.
    참고로, 이 코드에서는 현재 로그인한 사용자의 ID를 req.session.id를 통해 가져온다고 가정합니다. 따라서, 해당 사용자의 ID를 세션에 저장해두어야 합니다. 만약 세션을 사용하지 않는다면, 다른 방법으로 현재 로그인한 사용자의 ID를 가져와야 합니다.
    #72677

    codingapple
    키 마스터
    하지만 다른사람이 이거 내 아이디라고 사칭하면 어떻게 검증하죠
    #72791

    이창민
    참가자
    다른사람이 사칭한다는게 이해가 잘 안됩니다 ㅠㅠ
    다른사람이 타고객의 계정을 알수가있을까요??
    
    우선 당연히 로그인을했을때 마이페이지에서 변경이 가능하고, db에서 현재로그인중인 id를 가진 document를 찾아서
    거기에 비밀번호를 수정해줘!
    이런식으로는 불가능한걸까요?
    #72816

    codingapple
    키 마스터
    비번 변경은 그렇게하면 됩니다 하지만 로그아웃상태에서 비번 리셋은 그거만으로는 불가능할듯요
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠