快速会话-在其他路由中未定义

时间:2018-06-29 10:50:26

标签: javascript node.js express xmlhttprequest express-session

在我的应用程序中,当客户端发生特定事件时,我想保存会话。我在客户端使用此功能:

var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", '/saveSession/' + data, true);
    xmlhttp.onreadystatechange = function () {  
        if (xmlhttp.readyState === 4) {  
            if (xmlhttp.status === 200) {    
            } else {  
                reject(xmlhttp.statusText);  
            }  
        }  
    }; 
    xmlhttp.send();
    resolve()

然后在服务器中保存会话:

router.post('/saveSession/:data', function (req, res, next) {
  const data = req.params.data;
  mySpecialFunction(data)
    .then(function (decodedData) {
        var info = decodedData.info;
        req.session.info = info;
        req.session.save();
        res.end();
    }).catch(function (error) {
        req.session.info = '';
        res.redirect('/login');
    });
})

我的服务器设置:

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const session = require('express-session');

const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

//Body parser setup
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

//Session setup
app.use(session({
 secret: 'secret:D',
 resave: true,
 saveUninitialized: false,
 cookie: { secure: false }
}))

//routes
const main = require('./source/main');
app.use('/', main);

问题:如何在这种情况下保存会话并以不同的方式访问它?我知道我在使用POST时必须结束请求,所以我尝试了req.session.save()以及res.send()和req.end()……没有任何作用。你有什么主意吗?如果您需要更多信息,请写评论

0 个答案:

没有答案