Node.js 在nodejs中保存会话

Node.js 在nodejs中保存会话,node.js,express,express-session,Node.js,Express,Express Session,我正在使用express session sequelize server.js var http = require('http'), express = require('express'), app = express(), config = require('./config/config'), routes = require('./src/routes'), bodyParser = require('body-parser'),

我正在使用express session sequelize

server.js

  var http = require('http'),
    express = require('express'),
    app = express(),
    config = require('./config/config'),
    routes = require('./src/routes'),
    bodyParser = require('body-parser'),
    session = require('express-session'),
    application = require("./src/application");
    path = require('path');

const expressSession = require('express-session');
const SessionStore = require('express-session-sequelize')(expressSession.Store);
const Sequelize = require('sequelize');
const myDatabase = new Sequelize('db', 'root', '', {
    host: 'localhost',
    dialect: 'mysql'
});

const sequelizeSessionStore = new SessionStore({
    checkExpirationInterval: 15 * 60 * 1000, // The interval at which to cleanup expired sessions in milliseconds.
    expiration: 24 * 60 * 60 * 1000,  // The maximum age (in milliseconds) of a valid session.
    db: myDatabase
});
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(expressSession({
    secret: 'keep it secret, keep it safe.',
    store: sequelizeSessionStore,
    name: 'session_id',
    resave: false,
    saveUninitialized: false,
    cookie: {
        maxAge: 7 * 24 * 3600 * 1000,
        httpOnly: true
    }
}));
app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, x-access-token");
    next();
});


app.use(function(req, res, next) {
    application.setRequestSession(req, res);
    next();
});

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
routes(app);


app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.json({
        message: err.message,
        error: app.get('env') === 'development' ? err : {}
    });
});

http.createServer(app).listen(config.port, function() {
    console.log('Listening on port ' + config.port);
});
现在在路由器中,我使用
req.session
进行
saveUser
呼叫:

router.post("/saveUser", function(req, res) {
    var body = req.body.body;
    User.saveUser(body).then(function (data) {
        //app.createSession(req);
        req.session.user = data;
        res.send(200, data);
    });
});
对于其他电话,我想检查会话是否存在:

var checkSession = function(req,res,next){
    if(req.session.user){
        return next();
    }
    res.status(400).json({
        error:"User session authentication error"
    });
};
但是这里我有
req.session.user
未定义的
。为什么?我做错了什么


有什么想法吗?

/saveUser
路由响应数据是的,saveUser是基于您的中间件选项响应数据的,您可能需要在更改会话数据后手动调用。我想了解一下,为什么同一用户的每个请求sesionID都不同?是
/saveUser
路由响应数据是的,saveUser正在根据您的中间件选项响应数据,您可能需要在更改会话数据后手动调用这些选项。我想了解,为什么同一用户的每个请求的sesionID都不同?