【发布时间】:2015-12-13 18:26:41
【问题描述】:
我的问题是我的会话在新层中未定义,即使在设置会话值的“if”之后也是如此。
/*******************************************/
/**/ var express = require('express'),
/**/ cookieParser = require('cookie-parser'),
/**/ session = require('express-session'),
/**/ bodyParser = require('body-parser'),
/**/ ejs = require('ejs'),
/**/ mysql = require('mysql'),
/**/ md5 = require('md5');
/*******************************************/
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'samurai'
});
connection.connect(function(error) {
if(error) {
console.log("There is a problem with connection to the database.");
return;
}
console.log("Connected with a database.");
});
app.use(cookieParser());
app.use(session({
secret: 'test session',
resave: false,
saveUninitialized: true
}));
var sess;
这里我的会话是未定义的(首先我去'/sign'地址):
app.get('/', function(req, res) {
sess = req.session;
console.log("sesja = "+sess.login); <--------------- undefined
if(sess.login) {
res.render('indexo');
} else {
res.render('index');
}
});
app.post('/sign', function(req, res, next) {
sess=req.session;
var query = 'SELECT * FROM ?? where ??=? AND ??=?';
var table = ["users", "name", req.body.login, "password", md5(req.body.password)];
query = mysql.format(query, table);
connection.query(query, function(err, rows) {
if(err) {
console.log(err);
return;
} else if(rows.length > 0) {
console.log("You have been sucessfully logged in.");
sess.login = req.body.login;
console.log(sess.login); <------------ works fine
} else {
console.log("The name or password is incorrect.");
}
});
console.log(sess.login); <---------------- here again undefined
res.end();
});
问题仅在会话情况下,因为如果我在“var sess;”旁边创建其他全局变量; (例如 var test;)并在“/sign”层的“if”中为变量设置一个值,然后“test”将在其他层和之后的“if”中可见。
最后一个问题:为什么 session.login 在“if”之后和其他层是不可见的?如何正确设置?你有一些关于创建会话的提示吗?
感谢你们的时间和帮助。
【问题讨论】:
标签: javascript node.js session express