Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – connect-mongo创建的条目未过期大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Express设置了一个Node服务器,使用Passport进行身份验证.我听说connect-mongo很适合用于持久登录会话,所以我设置好了,一开始看起来一切正常,用户会话会根据过期时间由mongo自动删除.但是,在生产中,对于每个用户会话,还有5000个永不过期的空会话,我无法弄清楚为什么mongo不会自动清理它们. mongo中空会话的示例条目如下所示:
{ "_id" : "JMtV5Z1oWRkgh9KIKlwSqwoe","session" : "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2014-02-13T22:09:09.948Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}","expires" : Date( 1392329349948 ) }

这是Express配置代码

var express = require('express'),passport = require('passport'),fs = require('fs'),http = require('http'),https = require('https'),util = require('util'),mongoose = require('mongoose'),MongoStore = require('connect-mongo')(express),FacebookStrategy = require('passport-facebook').Strategy,LocalStrategy = require('passport-local').Strategy;


app.configure(function() {
  app.set('views',__dirname + '/views');
  app.set('view ENGIne','ejs');
  app.use(express.logger());
  app.use(requirehttpS);
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.session({ 
    secret: 'asdfasdf',cookie: { maxAge: 24 * 60 * 60 * 1000 },store: new MongoStore({
        mongoose_connection: mongoose.connections[0],clear_interval: 3600
      },function(err){
        console.log(err || 'connect-mongodb setup ok');
      }
    )
  }));

  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'),{ maxAge: 31557600000 });
});

我认为这些空会话是从搜索机器人创建的,因为我想不出为什么我的网站会在一夜之间被击中20,000次的任何其他原因.但即便如此,只要会话正确到期就不会出现问题,我的数据库也不会耗尽内存,但它们永远不会被清理干净.

任何见解将不胜感激,谢谢

解决方法

connect-mongo似乎工作正常.您将maxAge设置为1000天,这就是存储在cookie中的内容.请参阅ttl info here.

我怀疑你的问题是你实际上只想要在用户登录时发出cookie,而不是任何资产的每个请求(页面,图像,Javascript等).在这种情况下,您可以在express.cookieParser和express.session前添加可选的第一个参数,以便该中间件仅在某些路径上运行(例如/ login).

或者,您可以将express.static中间件移至express.cookieParser上方,然后不会为静态资产发布cookie.

大佬总结

以上是大佬教程为你收集整理的node.js – connect-mongo创建的条目未过期全部内容,希望文章能够帮你解决node.js – connect-mongo创建的条目未过期所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。