Express -сессии не содержат данные сеанса по разным маршрутам - PullRequest
0 голосов
/ 26 марта 2020

Я использую Express и Express -сессии для хранения идентификатора текущего пользователя. При входе в систему идентификатор пользователя устанавливается в сеансе, однако, если я перехожу на другую страницу, идентификатор пользователя устанавливается как неопределенный. Почему это?

Ниже приведен API. Маршруты аутентификации будут выполняться всякий раз, когда загружается страница, чтобы убедиться, что пользователь вошел в систему.

const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
const session = require('express-session');
const user = require('../components/user');

let sess;

router.post('/createUser', (req, res) => {
    user
        .createUser({
            username: req.body.username,
            password: req.body.password,
            email: req.body.email
        })
        .then(() => res.sendStatus(200))
});
router.post('/login', (req, res) => {
  sess = req.session;
    user
        .authenticate({
            username: req.body.username,
            password: req.body.password
        })
        .then(({ success, user }) => {
            if (success) {res.sendStatus(200); sess.userID = user;}
            else res.sendStatus(401)
        })
});

router.post('/auth', (req, res) => {
  sess = req.session;
    if (sess.userID === undefined){
      res.redirect('/');
    }else{
      res.sendStatus(200);
    }
});

router.post('/auth/logout', (req, res) => {
  sess = req.session;
  sess.userID = undefined;
  res.redirect('/');
});

router.post('/auth/createCheck', (req, res) => {
  sess = req.session;
  console.log(sess.userID);
    if (!sess.userID === undefined){
      res.redirect('/');
    }else{
      res.sendStatus(200);
    }
});


module.exports = router;

1 Ответ

0 голосов
/ 11 апреля 2020

Оказывается, это потому, что я определил sess на каждом маршруте, где он должен был быть определен только в маршруте входа в систему.

...