node-mysql クエリ コールバック内で nodejs サーバー セッション変数にアクセスしようとしていますが、req.session 内の変数にアクセスまたは設定できないようです。
connection.connect();
connection.query('SELECT id, firstname, lastname FROM users WHERE username = ? AND password = ?', [username, password] , function(err, rows, fields) {
if (err) throw err;
console.log(rows.length);
if(rows.length > 0){
console.log('Firstname: ' + rows[0]['firstname'] + ' Last Name: ' + rows[0]['lastname']);
req.session.firstname = rows[0]['firstname'];
req.session.lastname = rows[0]['lastname'];
} else {
console.log('No Results');
}
});
connection.end();
上記のように、セッションが正しく機能していることを確認するためのテストとして、名前と姓をセッションに追加しようとしていますが、これは最終的に認証システムの一部になります。
これを達成するための最良の方法は何ですか。いくつかの重要なミドルウェアがありませんか?
編集:これはroutes.login_processの完全なコードです
var mysql = require('mysql');
var md5 = require('MD5');
exports.login_process = function(req, res){
var username = req.body.username;
var password = md5(req.body.password);
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
database : 'node',
password : 'test',
});
connection.connect();
connection.query('SELECT id, firstname, lastname FROM users WHERE username = ? AND password = ?', [username, password] , function(err, rows, fields) {
if (err) throw err;
console.log(rows.length);
if(rows.length > 0){
console.log('Firstname: ' + rows[0]['firstname'] + ' Last Name: ' + rows[0]['lastname']);
req.session.firstname = result[0]['firstname'];
req.session.lastname = result[0]['lastname'];
} else {
console.log('No Results');
}
});
connection.end();
res.writeHead(200);
res.end();
//res.redirect('http://www.bbc.co.uk');
}
これは /login に投稿されたフォームから投稿されています
app.post('/login', routes.login_process);