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

home2 게시판 Node.js, Express 게시판 질문입니다.

질문입니다.

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

    권용성
    참가자
    로그인 할 때 일부러 잘못된 아이디와 비밀번호로 로그인을 하면
    유효하지 않은 아이디, 비밀번호라는 메세지가 아니라
    fail 페이지로 가버리네요...ㅠㅠ
    뭐가 잘못된걸까요?
    
    아래는 코드입니다.
    
    const express = require("express");
    const app = express();
    app.use(express.urlencoded({ extended: true }));
    const MongoClient = require("mongodb").MongoClient;
    const methodOverride = require('method-override')
    app.use(methodOverride('_method'))
    app.set("view engine", "ejs");
    app.use('/public', express.static('public'));
    MongoClient.connect(
    "mongodb+srv://kdttodoapp:qwer1234@cluster0.t3ifw7q.mongodb.net/?retryWrites=true&w=majority",
    function (에러, client) {
    if (에러) {
    return console.log(에러);
     }
    db = client.db("todoapp");
    // db.collection('post').insertOne({이름 : 'Hansol', 나이 : 31}, function(에러, 결과){
    // console.log('저장완료');
    // });
    app.listen(8080, function () {
    console.log("listening on 8080");
     });
     }
    );
    app.get("/pet", function (요청, 응답) {
    응답.send("펫용품을 쇼핑할 수 있는 페이지입니다.");
    });
    app.get("/beauty", function (요청, 응답) {
    응답.send("뷰티용품을 쇼핑할 수 있는 페이지입니다.");
    });
    app.get("/", function (요청, 응답) {
    응답.render("index.ejs");
    });
    app.get("/write", function (요청, 응답) {
    응답.render("write.ejs");
    });
    app.post("/add", function (요청, 응답) {
    // 응답.send("전송완료");
    db.collection("counter").findOne({ name: "게시물갯수" }, function (에러, 결과) {
    console.log(결과.totalPost);
    var 총게시물갯수 = 결과.totalPost;
    db.collection("post").insertOne(
     { _id: 총게시물갯수 + 1, 할일: 요청.body.title, 날짜: 요청.body.date },
    function (에러, 결과) {
    console.log("저장완료");
    db.collection("counter").updateOne({ name: "게시물갯수" }, { $inc: { totalPost: 1 } }, function (에러, 결과) {
    if (에러) {
    return console.log(에러);
     } else {
    console.log(결과);
    응답.redirect('/list');
     }
     });
     });
     });
    });
    app.get("/list", function (요청, 응답) {
    db.collection("post").find().toArray(function (에러, 결과) {
    console.log(결과);
    응답.render("list.ejs", { posts: 결과 });
     });
    });
    app.delete('/delete', function(요청, 응답){
    console.log(요청.body)
    요청.body._id = parseInt(요청.body._id);
    db.collection('post').deleteOne(요청.body, function(에러, 결과){
    console.log('삭제완료');
    응답.status(200).send({ message : '성공했습니다.' });
     });
    });
    app.get('/detail/:id', function(요청, 응답){
    db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){
    console.log(결과);
    응답.render('detail.ejs', { data : 결과})
     });
    });
    app.get('/edit/:id', function(요청, 응답){
    db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){
    console.log(결과);
    응답.render('edit.ejs', { post : 결과})
     });
    });
    app.put('/edit', function(요청, 응답){
    db.collection('post').updateOne({ _id: parseInt(요청.body.id) }, {$set : { 할일: 요청.body.title, 날짜: 요청.body.date }}, function(에러, 결과){
    console.log(결과);
    응답.redirect('/list');
     });
    });
    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', function(요청, 응답){
    응답.render('login.ejs');
    });
    app.post('/login', passport.authenticate('local', {
    failureRedirect : '/fail'
    }),function(요청, 응답){
    응답.redirect('/mypage');
    });
    app.get('/mypage', 로그인했니, function(요청, 응답){
    console.log(요청.user);
    응답.render('mypage.ejs', 사용자 = 요청.user);
    });
    function 로그인했니(요청, 응답, next){
    if(요청.user){
    next();
     }else{
    응답.send('로그인 안하셨는데요?');
     }
    }
    app.get('/signup', function(요청, 응답){
    응답.render('signup.ejs');
    });
    app.post('/signup', function(요청, 응답){
    db.collection('login').insertOne({id : 요청.body.id, pw : 요청.body.pw}, function(에러, 결과){
    if (에러) {
    return console.log(에러);
     } else {
    console.log(결과);
    응답.redirect('/login');
     }
     })
    });
    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){
    db.collection('login').findOne({id: 아이디}, function(에러, 결과){
    done(null, 결과)
     })
    });
    // app.get('/fail', function(요청, 응답){
    // 
    // })
    #44987

    codingapple
    키 마스터
    failureRedirect 어쩌구 해놓은것때문에 실패하면 거기로 이동합니다
    이동말고 다른걸 해주고 싶으면 flash메세지 어쩌구 검색해봅시다
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 호 / 개인정보관리자 : 박종흠