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

home2 게시판 Node.js, Express 게시판 passport 로그인할때 mysql

passport 로그인할때 mysql

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

    이해욱
    참가자
    뭐가 문젠지 감이 안오네요
    salt를 정의할수 없다는데
    아이디 비밀번호가 맞으면 로그인되고
    아이디는 맞고 비번이 틀리면 login 페이지로 다시 돌아가는데
    아이디가 mysql 에 아예 없으면 팅겨버립니다
    왜이러죠
    
    assport.serializeUser(function(user, done){ console.log('serializeUser', user); done(null, user.username); })
    passport.deserializeUser(function(id, done){
      console.log('deserializeUser', id);
      var sql='SELECT * FROM users WHERE username=?';
      conn.query(sql, [id], function(err, results){
        console.log(sql,err,results);
        if(err){
          done('There is no user.');
        } else {
          done(null,results[0]);
        }
      })
    })
    passport.use(new LocalStrategy(
    function (username, password, done) {
      var uname=username;
      var pwd=password;
      var sql='SELECT * FROM users WHERE username=?';
      conn.query(sql, [uname], function(err, results){
        if(err){
          return done('There is no user.');
        }
        var user=results[0];
        return hasher({password:pwd, salt:user.salt}, function(err, pass, salt, hash){
          if(hash===user.password){
            console.log('LocalStrategy', user);
            done(null, user);
          } else{
            done(null,false);
          }
        })
      })
    }
    ))
    로그인 post
    ------------------------------------------------------------------
    app.post(
    '/auth/login',
    passport.authenticate(
      'local',
      {
        successRedirect: '/welcome',
        failureRedirect: '/auth/login',
        failureFlash: false
      }
      )
      );
    로그인 get 
    ------------------------------------------------------------
    app.get('/auth/login', function(req, res){
      var output = `
      <h1>Login</h1>
      <form action="/auth/login" method="post">
        <p>
          <input type="text" name="username" placeholder="username">
        </p>
        <p>
          <input type="password" name="password" placeholder="password">
        </p>
        <p>
          <input type="submit">
        </p>
      </form>
      `;
      res.send(output);
    });
    에러내용
    --------------------------------------------------------
    TypeError: Cannot read properties of undefined (reading 'salt')
        at Query.<anonymous> (C:\Users\atolo\Desktop\moon\app_session.js:100:44)
        at Query.<anonymous> (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\Connection.js:526:10)
        at Query._callback (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\Connection.js:488:16)
        at Query.Sequence.end (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
        at Query._handleFinalResultPacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
        at Query.EofPacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
        at Protocol._parsePacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Protocol.js:291:23)
        at Parser._parsePacket (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Parser.js:433:10)
        at Parser.write (C:\Users\atolo\Desktop\moon\node_modules\mysql\lib\protocol\Parser.js:43:10)
    #46766

    codingapple
    키 마스터
    salt나 hash어쩌구는 bcrypt같은 암호화해주는 라이브러리 설치하고 사용해야 쓸 수 있을걸요
    #46825

    이해욱
    참가자
    라이브러리는 다 설치했고 설정도 다했는데 이러네요 ㅠㅠ
    #46850

    codingapple
    키 마스터
    var user 부터 salt같은게 잘 들어있나 출력해보면서 원인을 찾아갑시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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