2017-02-05 7 views
0

申し訳ありませんが、私の質問では、私はジュニアです。nodeJSで可変セッションを持つ方法

ノードサーバーに2人の異なるユーザーが接続すると、変数が交差して結果が正しくありません。

私はnodejsの変数にセッションを使用する必要がありますが、使用方法はわかりません。

私のconsole.log変数が「疑似」の場合、2人のユーザーが接続していると間違った結果が出ることがあります。

私を助けてください:(あなたはあなたの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

関連する問題