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

home2 게시판 React 게시판 리액트 환경에서 로그인 기능 구현 관련

리액트 환경에서 로그인 기능 구현 관련

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

    강의현
    참가자

    리액트 환경에서 로그인 기능을 구현하고 있습니다.

    문제는 아이디랑 비번을 DB에 저장된 내용과 다르게 입력해도 로그인 성공이 됩니다.

    다른 정보를 입력 후 server 콘솔창을 확인하면 null이라고 뜨는데 post요청을 성공했다는 이유로 계속 로그인성공이라고 뜨는걸까요?

    아래 코드 확인해보시고 놓친 부분이 있으면 지적해주시면 감사하겠습니다.

    app.post('/login', passport.authenticate('local',
    {
    failureRedirect: '/fail',
    }), function (요청, 응답) {
    // console.log(요청)
    응답.redirect("/")
    });

    app.get('/mypage', 로그인했니, function (요청, 응답) {
    console.log(요청.user);
    응답.send('마이페이지 접속 성공')
    })

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

    // 이하 코드는 '/login'경로로 로그인 요청할 때만 실행되는 검증 코드
    passport.use(new LocalStrategy({
    usernameField: 'id',
    passwordField: 'pw',
    session: true,
    passReqToCallback: false,
    }, function (입력한아이디, 입력한비번, done) {
    console.log(입력한아이디, 입력한비번);
    db.collection('userinfo').findOne({ id: 입력한아이디 }, function (에러, 결과) {
    console.log(결과)
    if (에러) return done(에러)

    if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
    // 이하는 입력한비번과 결과.pw 모두 암호화된 상태에서 비교하는 문법
    bcrypt.compare(입력한비번, 결과.pw, function (에러, isMatch) {
    if (isMatch) {
    return done(null, 결과)

    } else {
    return done(null, false, { message: '비번틀렸어요' })
    }
    })
    })
    }));

    // 세션데이터 만들어 저장하는 코드(로그인 성공시 발동, 세션이 있어야 로그인 후 페이지 이용 가능)
    passport.serializeUser(function (user, done) {
    console.log(user)
    done(null, user.id)
    });

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

     

     

    #34684

    codingapple
    키 마스터

    null은 서버에서만 뜨고 프론트엔드에선 뜨지 않아서 if문으로 체크해봤자 별일없을듯요 

    로그인실패시 서버에서 메세지나 에러코드나 그런걸 보내주는 법을 찾아봅시다 그럼 프론트엔드에서 성공여부 체크가능합니다

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

About

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

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

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