发生了什么: - 我使用connect-mongo来存储用户会话。据我所知,只要服务器没有重启(?),我们就可以在db中存储多个用户会话。我有一个登录页面,每当用户登录时,我都会在会话中存储电子邮件地址。我可以看到在mongodb中创建的条目。服务器仍在使用隐身标签运行并使用不同的凭据登录,我看到上一个条目已被删除并被新用户替换。因此,在任何时候,db中只有一个最近登录的用户。
我想要的是: - 我想为已登录的每个用户存储会话。当一次注销时,我会检查针对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
}
})
});