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

home2 게시판 Node.js, Express 게시판 nodejs 로그인 과정에서, session, 쿠키 저장이 안되는 문제

nodejs 로그인 과정에서, session, 쿠키 저장이 안되는 문제

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

    정준
    참가자
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    app.use(session({secret : process.env.SESSION_CODE, resave : true, saveUninitialized: false}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.post(
    "/api/login",
     passport.authenticate('local'),function(req, res){
    const {email} = req.body
     db.collection('user').findOne({ email: email }, function (err, result) {
     res.json({ success: true, message: '로그인되었습니다', user: result});
     })
     }
    );
    passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    session: true,
    passReqToCallback: false,
    }, function(email, password, done) {
     db.collection('user').findOne({ email: email }, function (err, result) {
    if (err) return done(err)
    if (!result) return done(null, false, { message: '가입하지 않는 이메일이에요 🤔' });
    if (bcrypt.compareSync(password, result.password)) {
    return done(null, result)
     } else {
    return done(null, false, { message: '비밀번호가 틀렸어요 😭' })
     }
     })
    }));
    //세션등록하기
    passport.serializeUser(function(user, done){
    // console.log(user.email); 잘 됨
    done(null, user.email);
    })
    passport.deserializeUser(function (email, done){
    // db.collection('user').findOne({ email: email }, function (err, user) {
    // if (err) return done(err);
    // });
    done(null, {});
    });
    
    리액트 cilent를 위해 구현한 로그인 부분 코드입니다!
    
    로그인도 잘 되는데, session, 쿠키가 안 만들어집니다. 뭐가 문제일까요
    
    
    cilent에서 로그인 버튼을 누를 때 다음 코드가 실행됩니다
    
    
    async function loginHandler (email, password){
     
    try {
    const res = await axios.post("http://localhost:8000/api/login", {
     email,
     password,
     });
    if (res) {
    const {email, nickname} = res.data.user;
    setUserEmail(email);
    setUserNickname(nickname);
    navigate("/chat");
     }
     } catch (err) {
     console.error(err);
     }
     }
    
    
     
    #70847

    정준
    참가자
    serve쪽 코드 이미지 입니당
    #70881

    codingapple
    키 마스터
    deserializeUser안에 주석처리한부분이 실행되어야할듯요
    #70935

    정준
    참가자
    주석한 처리한 부분으로 실행해봤는데 여전히 안 됩니다 ㅠㅠ
    
    
    #71008

    codingapple
    키 마스터
    어떻게 안됩니까 
    리액트에서 ajax요청으로 로그인도 잘 시키고 있나요
    #71092

    정준
    참가자
    
    
    다음과 같이 요청하고 있습니다.
    
    form을 안 써서 그런걸까요 ?
    #71113

    정준
    참가자
    리엑트 측에
    import { useCookies } from "react-cookie";
    
    ...
    
    setCookie("user", user, { path: "/" });
    
    을 추가하니 됐습니다! 올
     
    
     
     
    #71114

    정준
    참가자
    import { useCookies } from "react-cookie";
    ...
    
    setCookie("user", user, { path: "/" });
    
    리엑트 cilent 쪽에 다음과 같은 코드를 추가하니 잘 작동됩니다! 올바르게 해결한 게 맞겠죠??
     
    #71135

    codingapple
    키 마스터
    좋은건 아닐 수 있습니다 post요청시 withCredentials 옵션도 집어넣어봅시다 
    https://stackoverflow.com/questions/63251837/express-session-cookie-not-being-set-when-using-react-axios-post-request
    #71360

    정준
    참가자
    정말 감사합니다!
10 글 보임 - 1 에서 10 까지 (총 10 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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