экспорт / использование экспресс-сессии в другом файле - PullRequest
0 голосов
/ 16 декабря 2018

Каков наилучший / распространенный способ использования экспресс-сессии в других файлах?У меня проблемы с интеграцией сессии в мой код.Я использовал токены авторизации, но вместо этого я хотел бы использовать сессии.Я определил сессию в моем server.js:

const express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser('secret'));
app.use(session({
    key: 'user_sid',
    secret: 'secret',
    resave: false,
    saveUninitialized: false,
    cookie: {
        expires: 600000
    }
}));

// stuff

module.exports = {app, session};

И все работает отлично!Но когда я пытаюсь использовать его в моем userController.js:

var express = require('express');
var {session} = require('./../server');

module.exports.login = (req, res) => {
  var body = _.pick(req.body, ['email', 'password']);
  User.findByEmailAndPassword(body.email, body.password).then((user) => {
    // console.log(req.session); // is undefined
    res.render('dashboard.hbs');
  }).catch((e) => {
    res.status(400).send();
  });
}

, тогда req.session равно undefined.Я знаю, что то, что я делаю, не правильно, но как правильно это сделать?

Спасибо!

1 Ответ

0 голосов
/ 16 декабря 2018

Я думаю, вам вообще не нужно экспортировать session, поскольку вы * app говорите своему *1002*.

Так что рабочая скрипка должна выглядеть следующим образом:

const express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser('secret'));
app.use(session({
  key: 'user_sid',
  secret: 'secret',
  resave: false,
  saveUninitialized: false,
  cookie: {
    expires: 600000
  }
}));

// stuff

module.exports = app;

и ваш контроллер:

module.exports.login = (req, res) => {
  var body = _.pick(req.body, ['email', 'password']);
  User.findByEmailAndPassword(body.email, body.password).then((user) => {
    // console.log(req.session); // is undefined
    res.render('dashboard.hbs');
  }).catch((e) => {
    res.status(400).send();
  });
}

Я предполагаю, что вы собираетесь использовать эту экспортированную функцию входа в систему для маршрута, например

app.use('/login', require('yourCtrl.js').login);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...