我用Passport .js在我的nodejs+express上处理auth.js应用程序.我设置了一个LocalStrategy,从mongodb接收用户

我的问题是users have to re-authenticate when I restart my node server.这是一个问题,因为我正在积极开发它,不想在每次重新启动时登录...(+我使用 node 管理器)

以下是我的应用程序设置:

app.configure(function(){
    app.use('/static', express.static(__dirname + '/static'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({secret:'something'}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(app.router);
});

和会话序列化设置:

passport.serializeUser(function(user, done) {
    done(null, user.email);
});

passport.deserializeUser(function(email, done) {
    User.findOne({email:email}, function(err, user) {
        done(err, user);
    });
});

我使用connect mongodbtry 了博客上给出的解决方案(删除了链接,因为它不再存在),但没有成功

app.use(express.session({
    secret:'something else',
    cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
        store: MongoDBStore({
        db: mongoose.connection.db
    })
}));

EDIT其他问题:只需进行一次连接(使用one connexion limited mongohq免费服务)

EDIT 2解决方案(作为一个版本,我的声誉很低,无法回答我的问题

这是我最终找到的解决方案,使用mongoose 发起的连接

app.use(express.session({
    secret:'awesome unicorns',
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(
        {db:mongoose.connection.db},
        function(err){
            console.log(err || 'connect-mongodb setup ok');
        })
}));

推荐答案

有一个名为connect-mongo的开源软件,它完全满足您的需要——将会话数据持久化到mongodb中

usage example (with a reuse of 100 opened connection) :

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sess');
app.use(express.session({
    secret:'secret',
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(
    // Following lines of code doesn't work
    // with the connect-mongo version 1.2.1(2016-06-20).
    //    {db:mongoose.connection.db},
    //    function(err){
    //        console.log(err || 'connect-mongodb setup ok');
    //   }
    {mongooseConnection:mongoose.connection}
    )        
}));

你可以在这里阅读更多信息:https://github.com/kcbanner/connect-mongo

Node.js相关问答推荐

使用参考中断Mongoose模型-Node.js

如何获取mongoose中单个id数据的记录

是否可以在 NodeJS 代码库中的每个函数之前和之后添加 console.log?

表达 js 错误处理程序在第一个之后被忽略

无法截取页面截图

我如何保护nodejs中的路由

如何在带有 JS 的 Nodejs 中使用没有 Async 方法的 Await

Typescript 条件语句不过滤值?

Typescript typeRoots 未检测到类型定义

当我try 从本地主机发布新产品时收到错误消息

NPM 错误:修复upstream 依赖冲突安装 NPM 包(云功能)

访问 Mongoose 查询之外的变量

使用Typescript 时我应该避免循环导入吗?

cURL 和 shell 任务

baseurl64 缓冲区解码

使用 Node.JS,如何按时间顺序获取文件列表?

添加git信息到create-react-app

AWS Lambda 函数写入 S3

Npm postinstall 仅用于开发

npm install packagename --save-dev 不更新 package.json