How to access session in express, outside of the req?

后端 未结 4 1330
梦如初夏
梦如初夏 2021-02-04 01:14

I know that I can use

function(req, res) {
    req.session
}

using express. However I need to access the session outside of the response func

4条回答
  •  梦谈多话
    2021-02-04 01:59

    I think I have a different answer.

    code:

    var MongoStore = require('connect-mongo')(session);
    var mongoStore = new MongoStore({
        db:settings.db,            //these options values may different
        port:settings.port,
        host:settings.host
    })
    app.use(session({
        store : mongoStore
        //here may be more options,but store must be mongoStore above defined
    }));
    

    then you should define a session key at req,just like :

    code:

    req.session.userEmail;
    

    finally,you can get it this way:

    code:

    var cookie = require("cookie"); //it may be defined at the top of the file
    io.on("connection",function(connection){
    
     var tS = cookie.parse(connection.handshake.headers.cookie)['connect.sid'];
     var sessionID = tS.split(".")[0].split(":")[1];
     mongoStore.get(sessionID,function(err,session){
          console.log(session.userEmail);
     });
    }
    

    I had test it yesterday, it worked well.

提交回复
热议问题