无法使用护照在 MongoDB 中存储会话 [英] Can't store session in MongoDB with passport
问题描述
我是 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屋!