Узел JS Экспресс + Монго сеанс системы пользователя - PullRequest
0 голосов
/ 04 ноября 2018

Я очень запутался в том, как создать систему пользовательских сессий с помощью узла / экспресс / mongodb. Я чувствую, что я рядом, но на самом деле я не знаю, что происходит в этот момент. Для справки я знаю только систему PHP.

Моя настройка

  1. MongoDB
  2. экспресс
  3. экспресс-ession
  4. подключить-Монго

Насколько я понимаю, это просто дает мне некоторую утилиту для сохранения пользовательских сессий в базе данных. Чего мне не хватает, так это фактического соединения (где именно я инициирую этот сеанс) и стороны клиента (есть ли сторона клиента?)

Мой код выглядит так, некоторые вещи для краткости удалены. Обратите внимание, что в модуле Database есть статический экземпляр, и Promise из этого экземпляра называется connect. Обещание connect возвращает объект базы данных, поэтому технически мне приходится ждать, пока эта штука не будет готова.

const express = require('express');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const Database = require('./js/database');

let app = express();
app.use(express.json());
app.use(cookieParser());
Database.instance.connect.then(function(db){
    app.use(session({
        secret: 'my-secret',
        resave: false,
        saveUninitialized: false,
        store: new MongoStore({db:db})
    }));
})

Во всяком случае, я даже не уверен, чего я здесь достиг. Я думаю , что я только что создал коллекцию монго для хранения пользовательских сессий. Я понятия не имею, что делать дальше. Каждый учебник, кажется, останавливается здесь. Где я могу подключить это к моему запросу на вход, который выглядит так:

router.post('/login', function(req, res, next){
    if(!req.body.email || !req.body.password){
        res.sendStatus(400);
    }

    userManager.loginUser(req.body.email, req.body.password)
        .then(function(result){
            res.sendStatus(200);
        })
        .catch(function(err){
            res.status(401).send({err});
        });
});

А потом, когда пользователь возвращается, скажем, /home, как мне повторно авторизоваться с помощью файлов cookie / сеансов?

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