http-proxy-middleware为每个请求创建新会话

时间:2017-04-26 11:54:50

标签: session webpack http-proxy-middleware

我使用http-proxy-middleware构建一个代理,它为每个请求生成新会话,因此我无法使用session中的令牌存储验证登录状态.anynoe有想法解决此问题。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

// proxy middleware options 
var options = {
  target: 'http://localhost:8081', // target host 
  changeOrigin: true,               // needed for virtual hosted sites 
  ws: true,                         // proxy websockets 
  logLevel: "debug",
  pathRewrite: {
    '^/src/wxmservice/' : '/wxmservice/'
  },
  onProxyRes: function (proxyRes, req, res) {
    if (proxyRes.headers['set-cookie'] != undefined) {
        req.session['cookie'] = proxyRes.headers['set-cookie'];  // must be or you will get new session for each call
        req.session['proxy-cookie'] = proxyRes.headers['set-cookie'];  // add to other key because cookie will be lost
    }
    console.log("response: " + req.session.id);
    console.log(req.session);
  },
  onProxyReq: function (proxyReq, req, res) {
    // check for whether the session be freshed
    if (req.session.view)
      req.session.view ++;
    else
      req.session.view = 1;

    // use ower key to restore cookie
    if (req.session['proxy-cookie'] != undefined)
      proxyReq.setHeader('cookie', req.session['proxy-cookie'][0]);

    console.log("request: " + req.session.id);
    console.log(req.session);
  }
};

var session = require('express-session');
app.use(session({
    secret: 'sessiontest',
    resave: true,
    saveUninitialized:true
}));