2

Express フレームワークを使用して node.js サーバーをセットアップし、セッションを実装しようとしています。

これは機能します:

var express = require('express');
var session = require('express-session');
var redis = require('redis');

var server = express();
var redisClient = redis.createClient();

server.use(session({secret: 'mySuperSecretKey'}));

server.listen(8000, function () {
    console.log('listening...');
});

server.get('/', function (req, res) {
    req.session.aSessionEntry = 'value';
    res.send('Your session entry is' + req.session.aSessionEntry);
});

ただし、非同期関数内で server.use(session(...)) を宣言すると、無視されます。セッション処理は機能しなくなります。

ここ :

var express = require('express');
var session = require('express-session');
var redis = require('redis');

var server = express();
var redisClient = redis.createClient();

redisClient.get("sessionSecret", function(err, reply) {
    server.use(session({secret: reply.toString()}));
};

server.listen(8000, function () {
    console.log('listening...');
});

server.get('/', function (req, res) {
    req.session.aSessionEntry = 'value';
    res.send('Your session entry is' + req.session.aSessionEntry);
});

これができないのはなぜですか?

4

1 に答える 1