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

home2 게시판 Node.js, Express 게시판 로그인 시 세션 생성

로그인 시 세션 생성

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

    이준혁
    참가자
    현재 리액트를 활용해서 로그인시 세션을 생성하려고 하는데 로그인까지는 되는데 세션 생성 자체가 안되는데 어디서 잘 못 된걸까요? 
    코드 한 번 적어놓겠습니다 선생님 감사합니다!
    const express = require('express');
    const MongoClient = require('mongodb').MongoClient;
    const app = express();
    const path = require('path');
    const bodyParser = require('body-parser');
    const passport = require('passport')
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    
    
    app.use(express.json());
    var cors = require('cors');
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cors());
    app.use(express.json());
    app.use(session({secret : 'secretKey', resave : true ,saveUninitialized : false}));
    app.use(passport.initialize());
    app.use(passport.session());
    const url = "mongodb+srv://jun0317:dlwnsgur0317@cluster0.dtimw9s.mongodb.net/?retryWrites=true&w=majority"
    var db;
    MongoClient.connect(url, (err, client) => {
    if (err) {
    console.log("Error connecting to MongoDB:", err);
    return;
     }
    db = client.db("prepa");
    app.listen(8080, () => {
    console.log("8080입장");
     });
    app.use(express.static(path.join(__dirname, "prepa/build")));
    // app.get('/', (req, res) => {
    // res.sendFile(path.join(__dirname, '/prepa/build/index.html'))
    // })
    // 테스트용
    app.post("/data", (req, res) => {
    const data = req.body;
    console.log(req.body);
    db.collection("training")
     .insertOne(data)
     .then((result) => {
    console.log(req.body);
     })
     .catch((err) => {
    console.error(err);
    res.status(500).send(err);
     });
     });
    // 로그인 유효성 검사
    app.post(
    "/login",
    passport.authenticate("local", {
    failureRedirect: "/fail",
     }),
     (req, res) => {
    res.status(200).json({ message: true });
     }
     );
    passport.use(
    new LocalStrategy(
     {
    usernameField: "id",
    passwordField: "pw",
    session: true,
    passReqToCallback: false,
     },
     (id, pw, done) => {
    // Fix typo in parameter names here
    db.collection("user").findOne({ id: id }, (err, val) => {
    if (err) return done(err);
    if (!val)
    return done(null, false, {
    message: "존재하지 않는 아이디 입니다",
     });
    if (pw === val.password) {
    return done(null, val); // Pass user object to done function
     } else {
    return done(null, false, { message: "비밀번호가 틀렸습니다" });
     }
     });
     }
     )
     );
    passport.serializeUser(function(user, done){
    done(null, user.id);
     });
    passport.deserializeUser(function (id, done){
    done(null, {});
     });
    // app.get('*', (req, res) => {
    // res.sendFile(path.join(__dirname, '/prepa/build/index.html'))
    // })
    });
     
    #73122

    codingapple
    키 마스터
    deserializeUser의 done 함수안에 {}가 비어있어서 그런듯요
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 호 / 개인정보관리자 : 박종흠