繁体   English   中英

如何在nodeJS中有一个可变的会话

[英]how to have a variable session in nodeJS

对不起,我是大三。

当两个不同的用户连接到我的节点服务器时,我的变量交叉并且结果错误。

我读到我必须将会话用于nodejs中的变量,但我不知道如何使用。

当我console.log我的变量'Pseudo'时,如果有两个用户连接,有时我会得到错误的结果。

请帮我 :(

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

您正在app.js内将pseudo设置为变量,需要将其分配给users会话。 您可以通过以下方式访问(并设置)会话变量

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所说,您不应该像那样“返回”变量。 您应该在响应中添加内容并发送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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