2016-07-16 3 views
0

나는 다음과 같은 방법으로 세션 관리를 설정하는 특급 세션을 사용 : 새로운 세션 ID마다 I로 설정됩니다명시 세션이 작동하지 않습니다 - 새로운 세션을 모든 요청에 ​​따라

var express = require('express'); 
var session = require('express-session'); 
var app = express(); 
var mongoose = require('mongoose'); 
var MongoStore = require('connect-mongo')(session); 

mongoose.connect('mongodb://localhost/sessionTest'); 


app.listen(3000, function() { 
}); 

app.use(session({ 
    secret: 'justsomestuff', 
    resave: false, 
    saveUninitialized: false, 
    cookie: { } , 
    store: new MongoStore({mongooseConnection: mongoose.connection}) 
})); 

app.get('/first', function (req, res) { 
    console.log('first'); 
    req.session.test = 'Tester'; 
    req.session.save(); 
    console.log(req.sessionID); 
    res.send(req.sessionID); 
}); 

app.get('/second', function (req, res) { 
    console.log('second'); 
    if (req.session) 
      console.log('session exists'); 
    console.log(req.sessionID); 
    console.log(req.session.test); 
    res.send(req.sessionID); 
}); 

그러나 새로운 세션 첫 번째 또는/초 모든 세션뿐만 아니라 몽고의 데이터베이스에있는 내가

"connect-mongo": "^1.2.1", 
"express": "~4.13.4", 
"express-session": "^1.14.0", 

를 사용

curl 127.0.0.1:3000/first 
curl 127.0.0.1:3000/second 

과/전화 .

그런 직선적 인 문제로 보이지만 간단하게 파악할 수 없습니다.

+0

실제로 'curl' 호출에서 세션 쿠키를 다시 보내는 것처럼 보이지 않습니다. – robertklep

답변

0

컬을 사용 중입니다. 컬은 쿠키를 암시 적으로 지원하지 않습니다. 쿠키 값 explicitly via command을 전달해야합니다. 서버가 설정하려고 할 때 쿠키를 읽으십시오.

브라우저를 사용하여 테스트하지 않는 이유는 무엇입니까?

또는 여전히 컬을 원한다면 다음과 같이 -b 및 -c 매개 변수를 사용하십시오.

curl -b cookies.txt -c cookies.txt 

-b이를 Cookies.txt에서 들어오는 쿠키를 저장하기 위해 컬 이야기와 -c는이 요청에를 Cookies.txt에서 모든 쿠키를 포함하는 컬 알려줍니다.

또한 만료 필드를 추가하여 쿠키 수명을 늘리십시오.

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