Node JS Express + Mongo用户会话系统

时间:2018-11-04 19:31:15

标签: node.js mongodb express session

我对如何使用node / express / mongodb创建用户会话系统非常迷惑。我感觉自己已经接近了,但是我实际上不知道此时发生了什么。仅供参考,我仅了解PHP系统。

我的设置是

  1. mongodb
  2. 表达
  3. express-ession
  4. connect-mongo

据我了解,这只是给了我一些实用程序,可以将用户会话保存在数据库中。我所缺少的是实际连接(我应该在哪里确切发起此会话)和客户端(是否有客户端?)

我的代码看起来像这样,为简洁起见,删除了一些内容。 请注意,模块Database中有一个静态实例,该实例中的一个Promise称为connectconnect承诺返回数据库对象,因此从技术上讲,我必须等到事情准备就绪为止。

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})
    }));
})

无论如何,我什至不确定自己在这里完成了什么。我认为,我刚刚建立了一个mongo集合来存储用户会话。我不知道下一步该怎么做。每个教程似乎都在这里停止。我在哪里将其连接到我的登录请求,如下所示:

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 /会话重新进行身份验证?

0 个答案:

没有答案