简体   繁体   中英

how to have a variable session in nodeJS

Sorry for my question, i'm a junior.

When two different user is connect in my node server, my variable cross and the result is wrong.

I read i must use the session for my variable in nodejs, but i don't know how to use.

When i console.log my variable 'Pseudo', sometimes i have the wrong result if two user is connect.

Please help me :(

//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);
});

You are setting pseudo as a variable inside your app.js, you need to assign it to the users session. You can access (and set) session variables by doing

req.session.[variable]

A quick example would be:

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);
})

Edit: As jfriend00 said, you shouldn't be "returning" variables like that. You should be adding things to the response (res) and sending that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM