【问题标题】:MongoDB not reflecting written entries from Node.jsMongoDB 不反映来自 Node.js 的书面条目
【发布时间】:2014-12-02 09:59:52
【问题描述】:

我正在实现一个 MongoStore 以用于我的 Node.js/Express 应用程序中的会话存储,但是看起来好像没有任何会话实际上存储在数据库中。 (MongoDB 甚至没有 db.session)。

Socket.io 'authorization' 获取传入数据,并交叉检查发送的 sessionID,但它一直返回空。

希望有人能阐明任何问题?

var express = require('express');
var bodyParser=require('body-parser');
var cookieParser = require('cookie-parser');
var session      = require('express-session');
var MongoStore = require('connect-mongo')(session);
var utils = require("express/node_modules/connect/lib/utils");
var parseSignedCookie = utils.parseSignedCookie;
var cookie = require('cookie');

var app = express();

app.use(bodyParser());
app.use(cookieParser());

var sessionStore = new MongoStore({
        db: 'express',
        host: 'localhost',
        port: 27018,  
        collection: 'session', 
        auto_reconnect:true
});

app.use(session({
    cookie: { maxAge: 5000 } ,
    secret: "session secret",
    store: sessionStore
}));


function checkSession(req,res,next){
    if(req.session.user){
        next();
    }
    else {
        req.session.error = "Get Outta here!";
        res.redirect('/');
    }
}


app.get('/', function(req, res){
    res.sendfile('./index.html');
});

app.post('/',function(req,res){
    if(req.body.name){
        req.session.user=req.body.name;
        res.redirect('/info');
    }
    else {
        req.session.error = "Auth Failure";
        res.redirect('back');
    }
});

app.get('/info', checkSession, function(req,res){
    if(req.headers.cookie){
        var session_id = utils.parseSignedCookie(req.headers.cookie, 'session secret');
        console.log(session_id);


        console.log("true");
        res.sendfile('./info.html');
    }
    else {
        console.log("false");
        res.redirect('/');
    }


});

var http = require('http').Server(app);
http.listen(80, function(){
  console.log('listening on *:80');
});
var io = require('socket.io').listen(http);

【问题讨论】:

    标签: node.js mongodb session express socket.io


    【解决方案1】:

    您没有在任何地方使用您的sessionStore。试试这个:

    app.use(session({
      store: sessionStore,
      cookie: { maxAge: 5000 } ,
      secret: "session secret" 
    }));
    

    【讨论】:

    • 很好,我忘记在问题代码中包含这一行。不过,我实际上仍然有同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2013-05-14
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多