Keep session on two routers

0

I have 2 routers, for the example

router1

app.post('/consultas', function (req, res) {

    req.session.nombre = 'administrador';
   console.log('prueba',req.session.nombre); // ahi la session se guarda bien
});

router2

router.get('/', function (req, res) {
    console.log('recuperar session   ', req.session);// sale undefined
}

How can I get the session on the two routers?

    
asked by x-rw 08.08.2018 в 01:36
source

2 answers

0

I solved it with cookieSession

app.set('trust proxy', 1);
app.use(cookieSession({
                    name: 'session'
                    , secret: randomstring.generate()
                    , httpOnly: true
                    , maxAge: 30 * 60 * 1000
                    , secure: false
                    , overwrite: false
              }));


app.use('/', routes);
app.use('/session', session);

Note : it must be in that order for the routes to obtain the server session.

The use can be used like this (no need middlewares ), saving in the variable session

app.post('/consultas', function (req, res) {

    req.session.nombre = 'administrador';
   console.log('prueba',req.session.nombre); // ahi la session se guarda bien
});

and in the other routes the variable session is available to use it

    
answered by 08.08.2018 / 08:27
source
1

seeing your logic you could save the session in a middleware and in the two routes the middleware already created there will obtain the saved data of the user so you can put your middleware on your route

function mymiddleware(req,res,next){
  req.session.nombre='MiNOMBRE';
}

req.session.name to q all requests using this middleware will have access to req.session.name

app.get('/miroute1',mymiddleware,(req,res) => {
      console.log(req.session.nombre);
         }
app.get('/miroute2',mymiddleware,(req,res) => {
      console.log(req.session.nombre);
         }

A little more explained here

how to create a middleware

[ link

how to use them

[ link

    
answered by 08.08.2018 в 02:08