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

home2 게시판 Node.js, Express 게시판 회원타입을 두가지로 나눴는데 passport 어떻게 쓰나요?

회원타입을 두가지로 나눴는데 passport 어떻게 쓰나요?

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

    조승엽
    참가자

    대충 쇼핑사이트 흉내내고 있는데 개인회원이랑 쇼핑몰에 올리는 판매브랜드회원으로 나눠서 가입시키게 만들었어요. 서로 다른 콜렉션에 만들었고요. 가입할때 아이디 비번처럼 회원타입도 한글로 대충 '개인', '법인'  인풋으로 만들어놓긴 했거든요.  로그인할때  passport는 어떤식으로 해야하나요? passReqCallback로 될까 싶어서 검색해봤는데 설명이 어려워서 이해가 안되네요.

    #34621

    조승엽
    참가자

    로그인화면 form도 각각 만들었고요.

    #34623

    조승엽
    참가자

            <div id="loginPerScreen">  
                <form action="/member/login/user2" method="post">
                    <input type="text" name="id" class="form-control mt-3" placeholder="개인 아이디">
                    <input type="password" name="pw" class="form-control" placeholder="개인 패스워드">
                    <button type="submit" class="btn btn-danger mt-4 w-100">로그인</button>
                </form>                    
            </div>
            <div id="loginCorScreen" class="hide">  
                <form action="/member/login/user1" method="post">
                    <input type="text" name="id" class="form-control mt-3" placeholder="법인 아이디">
                    <input type="password" name="pw" class="form-control" placeholder="법인 패스워드">
                    <button type="submit" class="btn btn-danger mt-4 w-100">로그인</button>
                </form>                    
            </div>

    #34624

    조승엽
    참가자

    // 법인 로그인
    app.post('/member/login/user1',passport.authenticate('corporatemember',{
      failureRedirect : '/fail'
      }),function(요청, 응답){
     
      console.log('법인'+ 요청.body.id)
      console.log('법인'+ 요청.body.pw)
    });
    // 개인 로그인
    app.post('/member/login/user2',function(요청, 응답){
     
      console.log('개인'+ 요청.body.id)
      console.log('개인'+ 요청.body.pw)
    });

    // 로그인 검사
    passport.use(new LocalStrategy({
      usernameField: 'id',
      passwordField: 'pw',
      session: true,
      passReqToCallback: true,
    }, function (요청,입력한아이디, 입력한비번, done) {
      //console.log(입력한아이디, 입력한비번);
      console.log(요청 + '요청요청요청')
      db.collection('corporatemember').findOne({ 아이디: 입력한아이디 }, function (에러, 결과) {
        if (에러) return done(에러)

        if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
        if (입력한비번 == 결과.pw) {
          return done(null, 결과)
        } else {
          return done(null, false, { message: '비번틀렸어요' })
        }
      })
    }));

    passport.serializeUser(function(user,done){
        done(null,user.id)
    });

    passport.deserializeUser(function(아이디,done){
       
        db.collection('corporatemember').findOne({아이디 : 아이디},function(에러,결과){
            done(null, 결과)
        })    
    });

    function 로그인했니(요청,응답,next){
      if(요청.user){
          next()
      }else{
          응답.send('로그인 안하셨는데요?')
      }
    }

    #34628

    codingapple
    키 마스터

    회원기능은 수정할 필요가 없습니다 db에 회원유형만 잘 기록해놓으면 됩니다 

    그냥 나중에 페이지나 데이터 요청할 때 이 유저가 개인인지 뭔지 검사해보면 됩니다 

    #34646

    조승엽
    참가자

    나누는게 깔끔해 보였는데 굳이 회원 collection 나누지 않고, 회원유형 구분만 해놓고 하나에 몰아 넣어야겠네요.

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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