2016-07-16 5 views
0

Express 세션이 새 요청에 대해 새 세션 (새 세션 ID)을 작성 중입니다. 그리고 간헐적으로 발생합니다. 예를 들어 처음 3-4 건의 히트 곡은 잘 작동하고 동일한 기존 세션을 계속 사용하고 4 번째 히트 곡은 새로운 곡을 만들 것입니다. 때로는 첫 번째 요청 자체에 새로운 세션을 생성합니다.각 요청에 대해 새 세션을 작성하는 중

또한이 호는 호스팅 된 웹 사이트에서 제공됩니다. 그것은 localhost에서 잘 작동합니다. 난 이미 시도하고 작동하지 않는

상황은 ..

  1. Express 세션은 정적 파일 경로 후에 작성됩니다.
  2. Express 세션 암호와 cookieParser 암호가 동일하게 설정됩니다.
  3. favicon으로 app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));을 사용하십시오.
  4. 쿠키를 만드는 동안 최대 연령 필드에 매우 높은 값을 설정합니다.

다음은 내 app.js는 니펫 - 도움의 모든 종류는 크게 감상 할 수

var passport = require('passport'); 
var expressSession = require('express-session'); 
var app = express(); 
app.engine('hbs', hbs.express4({ 
    partialsDir: __dirname + '/views/partials' 
})); 
app.set('view engine', 'hbs'); 
app.set('views', path.join(__dirname, 'views')); 
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.use(express.static(path.join(__dirname, 'public'))); 
var flash = require('connect-flash'); 
app.use(flash()); 

var initPassport = require('./passport/init'); 
initPassport(passport); 
//app.use(bodyParser.urlencoded()); 
app.use(cookieParser('mysecret')); 
app.use(expressSession({ secret: 'mysecret', name:'user', cookie: {maxAge: 60000000}})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

. 감사.

답변

0

왜 MongoStore를 사용하여 세션 데이터를 저장하지 않습니까? 문제가 해결 될 수 있습니다.

app.use(session({ 
    secret: 'mysecret', 
    resave: false, 
    saveUninitialized: false, 
    expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)), 
    cookie: { } , 
    store: new MongoStore({mongooseConnection: mongoose.connection}) 
})); 
+0

예 코드를 MongoStore로 바꿨으며 모든 것이 작동합니다. 그러나 나는 아직도 OOTB 메모리 스토어에서이 문제의 원인을 파악할 수 없다. 내 호스팅 서버가 메모리에 세션을 지속하지 못하거나 메모리 저장소를 사용할 때 익스프레스 세션 자체에서 문제가 될 수 있기 때문일 수 있습니다. 새로운 코드가 작동 할 때 이전 코드에서 시간을 소비하기가 너무 어렵습니다. :) –