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

home2 게시판 Node.js, Express 게시판 회원인증 기능3 강의 질문입니다.

회원인증 기능3 강의 질문입니다.

  • 이 주제에는 2개 답변, 2명 참여가 있으며 망막3 년, 3 월 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #31341

    망막
    참가자

    질문 내용: 로그인 후 마이페이지에서 사용자 아이디가 출력되지 않아요..

    로그인 후 요청.user를 출력하면 잘 나오는데 시간이 조금 지나면 빈 값으로 변하는 것 같습니다.

    [server.js] 코드

    //로그인 관련 라이브러리
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');

    //app.use(미들웨어)
    //미들웨어 : 요청-응답 중간에 뭔가 실행되는 코드
    app.use(session({secret : '비밀코드', resave : true, saveUninitialized : false}));
    app.use(passport.initialize());
    app.use(passport.session());

    app.get('/login', function(요청, 응답){
    응답.render('login.ejs')
    });

     

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

    });

    app.get('/mypage', 로그인했니, function (요청, 응답) {
    console.log(요청.user);
    응답.render('mypage.ejs', { 사용자: 요청.user })
    });
     
    function 로그인했니(요청, 응답, next) {
    if (요청.user) {
    next()
    }
    else {
    응답.send('로그인안하셨는데요?')
    }
    }

    //로그인 인증 : 아이디 비번 확인
    passport.use(new LocalStrategy({
    usernameField: 'id',
    passwordField: 'pw',
    session: true,
    passReqToCallback: false,
    }, function (입력한아이디, 입력한비번, done) {
    //console.log(입력한아이디, 입력한비번);
    db.collection('login').findOne({ id: 입력한아이디 }, 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) {
    done(null, {})
    });

     

    [mypage.ejs] 코드

    <div class="container mt-4">
    <p> <%= 사용자.id %>의 마이페이지입니다.</p>
    </div>

    [login.ejs] 코드

    <div class="container mt-4">
    <form action="/login" method="POST">
    <div class="form-group">
    <label>아이디</label>
    <input type="text" class="form-control" name="id">
     
    </div>
    <div class="form-group">
    <label>비밀번호</label>
    <input type="text" class="form-control" name="pw">
    </div>
    <button type="submit" class="btn btn-danger">로그인</button>
    </form>
    </div>

    [로그인 후 콘솔 결과]

    [nodemon] restarting due to changes...
    [nodemon] starting node server.js
    listening on 8080
    {
    _id: new ObjectId("624d4db4226307aec24158bd"),
    id: 'test',
    pw: 'test'
    }
    {}

    보시면 위 처럼 {} 빈 값으로 변하는데..이게 뭐가 문제인지 이틀동안 찾아보다가 해결하지 못 하여 질문드리게되었습니다.ㅠㅠ

    #31348

    codingapple
    키 마스터

    deserializeUser() 안의 done(null, {}) 여기 중괄호가 비어있어서그런게 아닐까요 

    #31355

    망막
    참가자

    앗..그러네요 ㅠ 결과를 안넣었었네요 감사합니다.

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

About

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

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

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