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

home2 게시판 Node.js, Express 게시판 세션 함수가 작동하지 않아요

세션 함수가 작동하지 않아요

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

    강현우
    참가자
    const express = require("express");
    const app = express();
    const PORT = 8080;
    // 로그인 및 DB
    const MongoClient = require("mongodb").MongoClient;
    const URL =
    "보안";
    const passport = require("passport");
    const LocalStrategy = require("passport-local").Strategy;
    const session = require("express-session");
    let db;
    app.use(session({ secret: "비밀코드", resave: true, saveUninitialized: false }));
    app.use(passport.initialize());
    app.use(passport.session());
    // static & views 설정
    app.set("view engine", "ejs");
    app.set("/views", "views");
    app.use("/static", express.static(__dirname + "/static"));
    MongoClient.connect(URL, { useUnifiedTopology: true }, (error, client) => {
    if (error) return console.log("error");
    db = client.db("CODINGON");
    console.log("접속");
    // 나중에 라우팅될 코드 get 요청 이용해서 작성
    app.get("/", (req, res) => {
    res.render("index");
     });
    //로그인
    app.get("/login", (req, res) => {
    res.render("login");
     });
    app.post(
    "/login",
    passport.authenticate("local", {
    failureRedirect: "/fail",
     }),
    function (req, res) {
    res.send("로그인성공");
     }
     );
    app.listen(PORT, () => {
    console.log("listen");
     });
    passport.use(
    new LocalStrategy(
     {
    usernameField: "id",
    passwordField: "pw",
    session: true,
    passReqToCallback: false,
     },
    function (input_id, input_pw, done) {
    console.log(input_id, input_pw);
    db.collection("User_Info").findOne({ id: input_id }, function (err, res) {
    if (err) return done(err);
    if (!res) return done(null, false, { message: "존재하지않는 아이디요" });
    if (input_pw == res.pw) {
    return done(null, res);
     } else {
    return done(null, false, { message: "비번틀렸어요" });
     }
     });
     }
     )
     );
    passport.serializeUser(function (user, done) {
    done(null, user.email);
     });
    passport.deserializeUser(function (id, done) {
    done(null, {});
     });
    });
    로그인 버튼을 누르면 Cannot GET /fail라고만 계속 나옵니다 ㅠ
     
    #72766

    강현우
    참가자
    Passport.use 함수가 돌지않습니다.
    사용자가 입력한 아디 비번이 서버쪽 콘솔에 찍히지 않아요 ㅠ
    
    #72771

    codingapple
    키 마스터
    passport 설정부분들을 app.get들보다 더 위로 옮깁시다
    #72789

    강현우
    참가자
    passport.use(
    new LocalStrategy(
     {
    usernameField: "id",
    passwordField: "pw",
    session: true,
    passReqToCallback: false,
     },
    function (input_id, input_pw, done) {
    console.log(input_id, input_pw);
    db.collection("User_Info").findOne({ id: input_id }, function (err, res) {
    if (err) return done(err);
    if (!res) return done(null, false, { message: "존재하지않는 아이디요" });
    if (input_pw == res.pw) {
    return done(null, res);
     } else {
    return done(null, false, { message: "비번틀렸어요" });
     }
     });
     }
     )
     );
    passport.serializeUser(function (user, done) {
    done(null, user.email);
     });
    passport.deserializeUser(function (id, done) {
    done(null, {});
     });
    });
    
    이 코들을 위로 올려서 넣어도 안되네요 ㅠ
    #72815

    codingapple
    키 마스터
    MongoClient.connect 콜백함수안에 app.get이랑 passport설정들 들어있는거같은데 밖으로 뺍시다
    #72832

    강현우
    참가자
    const express = require("express");
    const app = express();
    const PORT = 8080;
    //DB
    const MongoClient = require("mongodb").MongoClient;
    const URL =
    "보안";
    var db;
    MongoClient.connect(URL, { useUnifiedTopology: true }, (error, client) => {
    if (error) return console.log("error");
    db = client.db("CODINGON");
    console.log("접속");
    });
    //passport
    const passport = require("passport");
    const LocalStrategy = require("passport-local").Strategy;
    const session = require("express-session");
    app.use(session({ secret: "비밀코드", resave: true, saveUninitialized: false }));
    app.use(passport.initialize());
    app.use(passport.session());
    //로그인
    app.get("/login", (req, res) => {
    res.render("login");
    });
    app.post(
    "/login",
    passport.authenticate("local", { failureRedirect: "/fail" }),
    function (req, res) {
    res.redirect("/");
     }
    );
    passport.use(
    new LocalStrategy(
     {
    usernameField: "id",
    passwordField: "pw",
    session: true,
    passReqToCallback: false,
     },
    function (input_id, input_pw, done) {
    console.log(input_id, input_pw);
    db.collection("User_Info").findOne({ id: input_id }, function (err, res) {
    if (err) return done(err);
    if (!res) return done(null, false, { messgae: "Not exist" });
    if (input_pw == res.pw) {
    return done(null, res);
     } else {
    return done(null, false, { messgae: "wrong password" });
     }
     });
     }
     )
    );
    // id를 이용해 세션을 저장(로그인 성공시 발동)
    passport.serializeUser(function (user, done) {
    done(null, user.id);
    });
    // 마이페이지 접속시
    passport.deserializeUser(function (id, done) {
    done(null, {});
    });
    // static & views 설정
    app.set("view engine", "ejs");
    app.set("/views", "views");
    app.use("/static", express.static(__dirname + "/static"));
    // 나중에 라우팅될 코드 get 요청 이용해서 작성
    app.get("/", (req, res) => {
    res.render("index");
    });
    // listen
    app.listen(PORT, () => {
    console.log("listen");
    });
    똑같이 input_id, input_pw 나오게 함수가 안돌고 Cannot GET /fail만 나옵니다
    #72836

    강현우
    참가자
    app.use(express.urlencoded({ extended: true })); 선언하니깐 해결 하였습니다
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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