express сеанс сохранен с помощью connect-mongodb-session, req.session.user возвращает неопределенное значение, но данные хранятся в Mongo - PullRequest
0 голосов
/ 09 апреля 2020

На конечной точке POST / login я сохраняю данные req.session.user и вижу данные, правильно сохраненные в коллекции сеансов MongoDB. Но при попытке доступа к req.session.user на другой конечной точке он не определен. Не могу понять, что не так.

мое приложение. js

var express = require('express');
var createError = require('http-errors');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require('cors');
var session = require('express-session');
var MongoDBStore = require('connect-mongodb-session')(session);
var app = express();
require('./lib/connectMongoose');
require('dotenv').config();

var store = new MongoDBStore({
  uri: process.env.MONGOOSE_CONNECTION_STRING,
  collection: 'Sessions'
});



// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(cors());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser('secret-key'));
app.use(express.static(path.join(__dirname, 'public')));

app.use(session({
  secret: 'secret-key',
  cookie: { maxAge: 1000 * 60 * 60 * 24, httpOnly: true },
  resave: false,
  saveUninitialized: false,
  store: store
}));

// Import router
require('./routes/router')(app);

мой POST / логин

router.post('/', async function (req, res) {
  try {
    const { email, password } = req.body;
    const user = await User.findOne({ email });
    if (user && await bcrypt.compare(password, user.password)) {
      jwt.sign(
        { user },
        process.env.JWT_SECRET,
        { expiresIn: '1d' },
        (err, token) => {
          if (err) {
            res.json({ message: 'something went wrong' });
            return;
          }
          req.session.user = {
            _id: user._id,
          };
          res.json({ message: 'user logged successfully', success: true, user, token });
        });

      return;

мой GET / endpint

router.get('/private/:id', async function (req, res) {
  try {
    const id = req.params.id;
    console.log('session', req.session.user); // This is undefined
...

это сеанс, сохраненный в пн go

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