1

I build a proxy with http-proxy-middleware and it generates new session for every request, thus I can't validate the login status with token store in session.anynoe has idea to resolve this issue.

enter image description here

enter image description here

Apostolos
  • 10,033
  • 5
  • 24
  • 39
Chad Ding
  • 21
  • 4

1 Answers1

1
// 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
}));
Stephen Rauch
  • 47,830
  • 31
  • 106
  • 135
Dr. Zhu
  • 21
  • 4