Я очень запутался в том, как создать систему пользовательских сессий с помощью узла / экспресс / mongodb. Я чувствую, что я рядом, но на самом деле я не знаю, что происходит в этот момент. Для справки я знаю только систему PHP.
Моя настройка
- MongoDB
- экспресс
- экспресс-ession
- подключить-Монго
Насколько я понимаю, это просто дает мне некоторую утилиту для сохранения пользовательских сессий в базе данных. Чего мне не хватает, так это фактического соединения (где именно я инициирую этот сеанс) и стороны клиента (есть ли сторона клиента?)
Мой код выглядит так, некоторые вещи для краткости удалены.
Обратите внимание, что в модуле 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 / сеансов?