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

home2 게시판 Node.js, Express 게시판 로그인 문제입니다

로그인 문제입니다

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

    이유진
    참가자
     login.ejs
     <section class="signin">
            <h1>로그인</h1>
            <div class="signin__card">
                <h2>ㅁㅁㅁ에 오신것을 환영합니다</h2>
                <form class="form" action="/login" method="POST">
                    <input name = "id" type="text">
                    <input name = "pw" type="password">
                    <button type="submit"> 로그인 </button>
                    <p>
                        * 정기적으로 비밀번호를 바꿔 안전하게 사용하세요!
                    </p>
                </form>
            </div>
        </section>
    server.js
    const express = require('express')
    const app = express()
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    
    
    app.use(express.static(__dirname + '/public'))
    app.set('view engine', 'ejs')
    const { MongoClient } = require('mongodb')
    let db
    const url = 'mongodb+srv://opera14379:qwer123@123123.zxl54js.mongodb.net/?retryWrites=true&w=majority'
    new MongoClient(url).connect().then((client)=>{
      console.log('DB연결성공')
      db = client.db('forum')
    }).catch((err)=>{
      console.log(err)
    })
    // 로그인 기능
    app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.get('/login', (req, res) => {
      res.render('login.ejs')
    }) 
    app.post('/login',  passport.authenticate('local', {
      failureRedirect : '/fail'
     }) ,(요청, 응답) => {
       응답.redirect('/')
     }) 
     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) {
      console.log('serializeUser');
     done(null, user.id)
    });
    passport.deserializeUser(function (아이디, done) {
     done(null, {})
    });
    코드는 위 처럼 작성되어 있습니다 login.ejs에서 몽고db에 만든 데이터를 기입했을때 fail로만 넘어가 로그인이 되지 않습니다 무엇이 문제일까요
    #102631

    codingapple
    키 마스터
    input태그들에 id pw 라고 name속성 잘 기입했나 확인합시다
    #102633

    이유진
    참가자
                    <input type="text" name = "id">
                    <input type="password" name = "pw" > 
    ejs 코드의 input 태그 name 속성은 몽고db와 동일하게 되어있습니다만 여전히 로그인은 되지 않고 쿠키 역시 없습니다
    #102641

    이유진
    참가자
    해결했습니다 
    
    app.use(express.json())
    app.use(express.urlencoded({extended:true}))
    
    해당 코드가 지워지면서 발생한것으로 보입니다
    
    
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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