• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

새로고침시 로그인 풀림 현상

21.10.28 20:25 작성 조회수 604

0

무료 도메인을 이용하여 수강중입니다.

 

로그인 풀림 현상에 대해 강의를 보고 따라하여도 풀리고 있으며

새로고침 후 재로그인시 아래 스샷과 같은 증상을 보이고 있습니다. 

 

그리고 SetCookie에서 이상하게 domain이 표시되지 않고 있는데요.

 

app.js 에는 잘 입력해놓은 상태입니다.

무엇이 문제 일까요??

 

const express = require('express');
const cors = require('cors');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const passport = require('passport');
const dotenv = require('dotenv');
const morgan = require('morgan');
const path = require('path');
const hpp = require('hpp');
const helmet = require('helmet');

dotenv.config();

const postRouter = require('./routes/post');
const postsRouter = require('./routes/posts');
const userRouter = require('./routes/user');
const hashtagRouter = require('./routes/hashtag');
const db = require('./models');
const passportConfig = require('./passport');

const app = express();

db.sequelize.sync()
    .then(() => {
        console.log('db 연결 성공');
    })
    .catch(console.error);

passportConfig();

if (process.env.NODE_ENV === 'production') {
    app.use(morgan('combined'));
    app.use(hpp());
    app.use(helmet());
    app.use(cors({
        origin: 'http://rjgnl.ek.ag',
        credentials: true,
    }));
} else {
    app.use(morgan('dev'));
    app.use(cors({
        origin: true,
        credentials: true,
    }));
}


app.use('/', express.static(path.join(__dirname, 'uploads')));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET))
app.use(session({
    saveUninitialized: false,
    resave: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
        httpOnly: true,
        secure: false,
        domain: process.env.NODE_ENV === 'production' && '.rjgnl.ek.ag'
    }
}));
app.use(passport.initialize());
app.use(passport.session());

app.get('/', (req, res) => {
    res.send('hello express');    
})

app.use('/post', postRouter);
app.use('/posts', postsRouter);
app.use('/user', userRouter);
app.use('/hashtag', hashtagRouter);

app.listen(80, () => {
    console.log('서버 실행 중');
});

 

pm2 백서버로그에선 저런 표시가 나오고 있습니다. 

 

 

 

답변 1

답변을 작성해보세요.

0

서버 배포하실 때 어떤 명령어로 배포하셨나요?

NODE_ENV=production 이 적용되지 않은 것 같아보입니다.

거휘님의 프로필

거휘

질문자

2021.10.29

적용확인 하는 방법이 어떻게 될까요?? next.config.js 코드를 확인하면 되나요??

front package.json 스크립트는 production 80번 포트로 start 명령어 설정 되어 있습니다.

 

withCredentials=true 도 잘 적용하였습니다.

네트워크 탭 로그인 성공시 cookies에는 응답 요청 정보가 다 들어가있고 새로고침 후 로그인 시도시에는 응답만 가고 요청은 가고 있지 않습니다.

application cookies에는 로그인 성공시에도 쿠키 정보가 들어가있지 않은 상태입니다.

connect.sid의 domain이 api.rjgnnl.ek.ag인데요. 

.rijgnl.ek.ag여야 합니다.

앞에 api가 붙어있으면 쿠키가 rjgnl.ek.ag에서는 작동 안합니다.

거휘님의 프로필

거휘

질문자

2021.10.29

엇 이상하네요.

위코드처럼 app.js에 도메인 코드는 제대로 입력해놓았습니다.

api.주소로 입력한 코드는 front config.js에만 입력 돼 있는 상태입니다.

어디가 문제 일까요 ㅠㅠ

export const backUrl = 'http://api.rjgnl.ek.ag';

이게 https를 적용 안 해서 생기는 문제인지 확신이 들지는 않네요.

console.log('node_env', process.env.NODE_ENV)

이 코드를 app.js에 넣은 후 다시 배포 후 서버 재실행(pm2 reload all) 해서 첫 서버 시작 시 어떻게 콘솔에 찍히나 확인해주세요.(pm2 monit)

거휘님의 프로필

거휘

질문자

2021.10.30

콘솔 로그 위치를 제대로 찍은건지 모르겠습니다만 서버 재시작시 백엔드 로그에 node_env가 아래와 같이 undefined로 표시되고 있습니다.

 

선생님 말씀대로 NODE_ENV=production가 적용되지 않은것 같은데 이럴 경우 어디서 문제를 찾아야 될까요

실행한 명령어 보여주세요(package.json)

거휘님의 프로필

거휘

질문자

2021.10.31

우분투 프론트서버에선 sudo npm run build 후 sudo npx pm2 start npm -- start

백서버에선 sudo npx pm2 start app.js로 합니다.

백서버에서 sudo npm start 하셔야 합니다.

거휘님의 프로필

거휘

질문자

2021.11.01

말도 안되는 실수를 하고 있었네요 ㅠㅠ.. 덕분에 바로 정상적으로 동작하게 됐습니다. 소중한 시간 내주셔서 감사합니다!