无法使用护照在 MongoDB 中存储会话 [英] Can't store session in MongoDB with passport

查看:21
本文介绍了无法使用护照在 MongoDB 中存储会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 Node JS 的新手,我正在尝试使用 connect-mongo npm 包在 mongoDB 中存储会话,一旦我添加了以下行 - 我收到一个错误:

I'm new to Node JS and I'm trying to store session in mongoDB by using the connect-mongo npm package , once I add the following line - i get an error :

app.use(session({
  saveUninitialized: true,
  resave: true,
  store   : new MongoStore({ // adding this will cause an error
  db: 'users'
 })
}));

这是我的代码的会话部分(我使用的是 express 4.16):

Here are the session parts of my code (i'm using express 4.16) :

    var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');
    var session = require('express-session');
    var passport = require('passport');
    var LocalStrategy = require('passport-local').Strategy;
    var expressValidator = require('express-validator');
    var multer = require('multer');
    var upload = multer({dest: './uploads'});
    var flash = require('connect-flash');
    var bcrypt = require('bcryptjs');
    var mongo = require('mongodb');
    var mongoose = require('mongoose');
    var MongoStore  = require('connect-mongo')(session);
    var db = mongoose.connection;
    session(app, mongo.initSessionStore);

   app.use(session({
      saveUninitialized: true,
      resave: true,
      store   : new MongoStore({
        db: 'users'
      })
    }));

    // Passport
    app.use(passport.initialize());
    app.use(passport.session());

推荐答案

您还没有将 MonogDB 的实例发送到 MongoStore.您发送了字符串 'user',它需要数据库实例.所以无法连接到MonogDB.

You haven't sent instance of MonogDB to MongoStore. You sent string 'user', and it expect database instance. So it can't connect to MonogDB.

如果你使用的是 Mongoose,你需要先连接数据库,然后你可以使用mongoose.connection for MongoStore:

If you are using Mongoose you need first to connect to database, and then you can usemongoose.connection for MongoStore:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;

app.use(session({
      saveUninitialized: true,
      resave: true,
      store   : new MongoStore({
        mongooseConnection: db
      })
}));

这篇关于无法使用护照在 MongoDB 中存储会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆