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

home2 게시판 Node.js, Express 게시판 passport 실패 메시지를 프론트에서 받아오려면..

passport 실패 메시지를 프론트에서 받아오려면..

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

    정중식
    참가자
    passport 실패 메시지를 프론트에서 받아오려면 어떡해야하나요?
    
    먼저, 패스포트는 이런식으로 짯고
    
    passport
    
      passport.use(
        new LocalStrategy(
          {
            usernameField: 'userId',
            passwordField: 'password',
            session: true,
            passReqToCallback: false,
          },
          async (userId, password, done) => {
            const user = await User.findOne({ userId });
            if (!user || user === null) {
              return done(null, false, {
                errors: [{ msg: '사용자가 존재하지 않습니다.' }],
              });
            }
            const isMatch = bcrypt.compare(password, user.password);
            if (!isMatch) {
              return done(null, false, {
                errors: [{ msg: '비밀번호가 다릅니다.' }],
              });
            }
            return done(null, user);
          }
        )
      );
    };
    
    프론트에서 가져오는 코드는 이렇게했습니다.
    
    login.js
    
     $.ajax({
          method: 'POST',
          url: '/login',
          data: {
            userId: userId.value,
            password: userPassword.value,
          },
        })
          .done((data) => {
            console.log(data);
          })
          .fail((request, status, error) => {
            // console.log(request);
            // message.innerHTML = request?.responseJSON.errors[0].msg;
            // console.log(request.responseJSON.errors);
            console.log(request);
          });
    
    errors 메시지를 가져오고싶은데 방법을 도저히 모르겠어요...
    
    
    
    
    #64887

    codingapple
    키 마스터
    https://stackoverflow.com/questions/15711127/express-passport-node-js-error-handling
    ajax로 로그인할거면 app.post 안에 passport어쩌구 이런거 씁시다
    #64919

    정중식
    참가자
    안녕하세요 선생님 보내주신 링크 토대로 이런식을 짜봤는데 문제가있어서 또 왔습니다.
    
    
    router.post('/login', (req, res, next) => {
      passport.authenticate(
        'local',
        { successRedirect: '/', failWithError: true },
        (err, user, info) => {
          if (err) {
            return next(err);
          }
          if (!user) {
            return res.status(401).json({
              errors: [{ msg: '사용자가 존재하지 않습니다.' }],
            });
          }
          return res.send({ success: true, message: 'authentication succeeded' });
        }
      )(req, res, next);
    });
    
    
    passport인증코드에서 아이디가 틀리던, 비밀번호가 틀리던 !user로 판단해서 에러메시지가 동일하게 발생합니다.
    저는 로그인한 사용자유저아이디가없고, 비밀번호가 틀리다는 에러메시지를 각각 띄우고싶은데 .. 제가 잘못코드를적고있는걸까요?
    
    #64920

    정중식
    참가자
    앗 찾았습니당.;
    console.log(info); 안에 패스포트인증실패시 에러메시지가 들어있네요 감샇바니다!
    
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 호 / 개인정보관리자 : 박종흠