2017-02-05 1 views
0

죄송합니다. 제 질문에 대해, 저는 중학생입니다.nodeJS에서 변수 세션을 갖는 방법

내 노드 서버에 두 명의 다른 사용자가 연결되면 변수가 교차하고 결과가 잘못됩니다.

나는 nodejs에서 내 변수에 대해 세션을 사용해야하지만 사용법을 모른다.

내가 console.log 내 변수 '가짜', 때로는 내가 두 명의 사용자가 연결되면 잘못된 결과가 있습니다.

제발 도와주세요 :(당신은 당신의 app.js 내부 변수로 의사를 설정하는

//Le modules 
var express = require('express'), 
bodyParser = require("body-parser"), 
session = require('express-session'), 
cookieParser = require('cookie-parser'), 
app = express(), 
//mongoose = require('mongoose'), 
MongoClient = require('mongodb').MongoClient, 
//assert = require('assert'), 
ObjectId = require('mongodb').ObjectID, 
device = require('express-device'), 
morgan = require('morgan'), 
fs = require('fs'), 
path = require('path'), 
log4js = require('log4js'), 

//Module complémentaire pour MORGAN 
accessLogStream = fs.createWriteStream(path.join(__dirname,'access.log'), { 
    flags: 'a' 
}), 

myDate = new Date; 


app.use(cookieParser()); 
app.use(device.capture()); //Module pour connaitre la plate-forme deconnection (PC, tablette, mobile...) 
app.use(express.static(__dirname + '/fichiers')); 
app.use(bodyParser.urlencoded({ 
extended: false 
})); 
app.use(morgan('combined', { 
stream: accessLogStream 
})); 

app.use(session({ 
secret: '123456789SECRET', 
saveUninitialized: false, 
resave: false, 
cookie: { 
    maxAge: 10000 
} 
})) 

app.set('view engine', 'jade'); // Template HTML 
app.set('views', './fichiers'); // Dire à JADE où sont les fichiers. 



var pseudo = ''; 

app.get('/blindtest', function (req,res){ 
res.render('blindtest'); 
}) 

app.post('/envoiPseudo', function (req,res){ 
return pseudo = req.body.pseudo; 
}) 

app.get('/test', function (req,res){ 
console.log(pseudo); 
}) 

var server = app.listen(8080, function() { 
var adressHost = server.address().address; 
var portHost = server.address().port; 
console.log('Ecoute à l\'adresse http://%s:%s', adressHost, portHost); 
}); 

답변

0

을, 당신은 사용자 세션에 할당해야합니다. 당신은 수행하여 세션 변수에 액세스 (및 설정) 할 수 있습니다

req.session.[variable] 

빠른 예는 다음과 같습니다

app.post('/envoiPseudo', function (req,res){ 
req.session.pseudo = 'this is unique to the user requesting'; 
console.log(req.session.pseudo); 
res.send("pseudo session variable: " + req.session.pseudo); 
}) 

편집 : jfriend00이 말했듯이, 그런 변수를 "반환"해서는 안됩니다. 응답 (res)에 항목을 추가하고 보내야합니다.

+0

답안에서 'return pseudo = req.body.pseudo;'를 제거하십시오. 이것은 매우 나쁜 습관입니다. 나머지 대답은 그 라인이 필요하지 않으므로 사용해서는 안된다는 것입니다. – jfriend00

관련 문제