session放数据库里解决丢失的问题

在编程里是会话的意思
Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。

**************************

哎,以前的系统session总是莫名其妙的丢失,放服务器进程里也不行。

老是丢失,然后客户端就无缘故的退出了。你设置session时间为1个小时也不行。

最后无奈,把session放数据库里了。哈,问题解决了。

用了1个星期了暂时没客户反映出问题。

也许每个人的需求不同吧,但是我仍旧觉得session放数据库里保险。


**************************
可以放Mongo也可以放redis里边。

放redis里边的比较多。

node中在express session中,我们通常放入redis中就可以了,剩下的他帮我们自己自动管理。销毁等等。

*************************

miss lei的项目中:

var session = require('express-session');

var RedisStore = require('connect-redis')(session);

store: new RedisStore(conf.SESSION_REDIS),

SESSION_REDIS:{
port: 6379,
//port: 6379,
//host: '127.0.0.1'
host: '10.150.160.136'
},

只给了数据库的ip和端口。

而在miss shen的项目中:

var session = require('express-session');
var RedisStore = require('connect-redis')(session);

options.store = new RedisStore( {retry_max_delay: 5000, max_attempts: 3} );

********************************************************************
********************************************************************

********************************************************************
下边我们学习一种把session放在mongodb中的。

setting中的内容:
module.exports = { 
  cookieSecret: 'myblog', 
  db: 'blog', 
  host: 'localhost',
  port: 27017
};

  

app.use(session({
  secret: settings.cookieSecret,
  key: settings.db,//cookie name
  cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
  store: new MongoStore({
    db: settings.db,
    host: settings.host,
    port: settings.port
  })
}));

然后看我们的数据库:

原文地址:https://www.cnblogs.com/coding4/p/5589697.html