Сессия не работает + экспресс - PullRequest
0 голосов
/ 13 июня 2018

Я использую экспресс-сессию в своем приложении.Я попробовал (POC):.

server.js

    app.use(session({
        secret: 'pal!lap789',
        // create new redis store.
        store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl :  260}),
        saveUninitialized: false, 
        key: 'user_sid',   
        resave: false,
        cookie: { secure: false, httpOnly: false }
    }));
app.get('/abcd', sessionChecker, function(req, res){
    res.send("hiiiii");
});

app.get('/session', (req, res) => {
    req.session.user = "subbuvlb@gmail.com";
    res.send("hgdhjdgjds")
});

Работает нормально,

Но когда я пытаюсь интегрироватьс моим проектом, он не работает.

app.use(session({
            secret: 'pal!lap789',
            // create new redis store.
            store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl :  260}),
            saveUninitialized: false, 
            key: 'user_sid',   
            resave: false,
            cookie: { secure: false, httpOnly: false }
        }));
var usersRouter = require('./router/users');
app.use('/users', usersRouter);

router / user.js

const express = require('express');  -------------> New express instantiated.
const router = express.Router();
router.post('/register', (req, res, next) => {
req.session.user = "emailid"
});

Я пытаюсь достичь have to check if user session is there for each resquest,

, поэтому я изменил свой файл server.js следующим образом:

    app.use(session({
                    secret: 'pal!lap789',
                    // create new redis store.
                    store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl :  260}),
                    saveUninitialized: false, 
                    key: 'user_sid',   
                    resave: false,
                    cookie: { secure: false, httpOnly: false }
                }));
        var usersRouter = require('./router/users');
        app.use('/users', usersRouter);
    var sessionChecker = (req, res, next) => {
console.log(req.session.user) --------------------------->Undefined
      if (req.session.user && req.cookies.user_sid) { 
          next();
      } else {
          res.redirect('/login');
      }    
    };
var usersRouter = require('./router/users');
app.use('/users',sessionChecker, usersRouter);

Почему req.user.undefined, если я указываю файлы маршрутизатора в server.js.Я думаю, что объяснил ясно, готов дать больше информации, если это необходимо.Пожалуйста, предоставьте ваши идеи.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

Наконец-то я понял,

Я проверяю с Angular.js front-end, по умолчанию Angular не будет включать Cookies, поэтому я установил {"withCredentials": "true"} в каждом запросе от Angular Front-конец.

0 голосов
/ 18 июня 2018

определить глобальную переменную в вашем server.js файле

global.express = require('express'); 
global.app = express();
global.session = require('express-session');

 app.use(session({
                    secret: 'pal!lap789',
                    store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl :  260}),
                    saveUninitialized: false, 
                    key: 'user_sid',   
                    resave: false,
                    cookie: { secure: false, httpOnly: false }
                }));

    var sessionChecker = (req, res, next) => {

      if (req.session.user && req.cookies.user_sid) { 
          next();
      } else {
          res.redirect('/login');
      }    
    };

var usersRouter = require('./router/users');
app.use('/users',sessionChecker, usersRouter);

в вашем router/user.js

const router = express.Router(); // use global express defined in server.js

router.post('/register', (req, res, next) => {
  req.session.user = "emailid"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...