1

发生了什么:-我正在使用 connect-mongo 来存储用户会话。据我所知,只要服务器没有重新启动(?),我们就可以在数据库中存储多个用户会话。我有一个登录页面,每当用户登录时,我都会在会话中存储电子邮件地址。我可以看到在 mongodb 中创建的条目。服务器仍在运行并使用隐身选项卡使用不同的凭据登录,我看到以前的条目已被删除并被新用户替换。因此,在任何时候,db 中只有一个最近登录的用户。

我想要什么:-我想为每个登录的用户存储会话。当一次注销时,我检查注销请求的电子邮件地址与数据库条目并删除该会话。所以我的 server.js 包含以下代码:-

var cookieParser = require('cookie-parser');
var MongoStore = require('connect-mongo')(session);
app.use(cookieParser());
app.use(session({
    cookie: { maxAge: 1000*60*2 } ,
    secret: "session secret" ,
    store:new MongoStore({
        db: 'express',
        host: '127.0.0.1',
        port: 27017,  
        url:"mongodb://localhost:27017/db",
        collection: 'session', 
        auto_reconnect:true,
        resave: true,
        saveUninitialized: true
    })
 }));

apiRoutes.post('/login', function(req, res) {
  User.findOne({
    email: req.body.email
  }, function(err, user) {
    if(!err)
      req.session.email = req.body.email;
       return res.json({ success: true ,message:"Session saved",status:200});
       });
  });

apiRoutes.post('/logout',function(req,res){
mongoose.connection.db.collection('sessions').find({session.email:req.body.email}, function(err, data) {
        if(err){
        console.log("Error");
        }
        else{
          //delete entry
      }
   })
 });
4

0 回答 0