• express session store


    express-session

    http://www.expressjs.com.cn/en/resources/middleware/session.html

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

    The session store instance, defaults to a new MemoryStore instance.

    express-session提供了基本的会话功能, 让服务器端具有存储用户访问状态的能力, 例如登录过了,当前访问那个页面,用户临时选中的购物车等。

    但是这个功能默认是内存存储的,所以一旦express服务器被重启,那么session数据将会丢失。

    session-file-store

    https://www.npmjs.com/package/session-file-store

    为了解决上面这个问题, 有个中间件提供了本地文件的存储。

    Session file store for Express and Connect. Also you can use it with Koa

    Session file store is a provision for storing session data in the session file

    var session = require('express-session');
    var FileStore = require('session-file-store')(session);
     
    var fileStoreOptions = {};
     
    app.use(session({
        store: new FileStore(fileStoreOptions),
        secret: 'keyboard cat'
    }));

    这样不怕服务器出现宕机的情况,服务器重启后, 用户访问页面,访问的状态还在。

    也可参考:

    https://www.cnblogs.com/chyingp/p/express-session.html

    但是随着应用流量的提升,单个服务器不足以满足应对高吞吐量的需求,一般是采用反向代理+N服务器拖挂。

    这样本地文件的session存储方式就有问题了,如果用户第二个连接没有被分配到和第一个连接相同的服务器上,那么用户状态就丢失。

    connect-mongo

    应对上面的新问题,采用会话集中存储单一服务上,单个的express服务器不做任何状态存储的工作,制作http服务和路由服务,以及无状态的后台逻辑。

    业界成熟的做法是,将session存储到 mongo或者redis上。

    本文介绍存储到mongo的方法。

    https://www.npmjs.com/package/connect-mongo

    MongoDB session store for Connect and Express

    const session = require('express-session');
    const MongoStore = require('connect-mongo')(session);
     
    app.use(session({
        secret: 'foo',
        store: new MongoStore(options)
    }));
    // Basic usage
    app.use(session({
        store: new MongoStore({ url: 'mongodb://localhost/test-app' })
    }));

    中文参考:

    https://zhuanlan.zhihu.com/p/53600244

  • 相关阅读:
    第五课 主引导程序的扩展 下
    C.Candy
    B.大钉骑马走江湖
    A喝酒(北京林业大学校赛)
    HDU 5666 Segment
    南京理工大学第八届校赛题目题解(部分)
    TCO 2016 Round 1B
    139. Word Break
    90. Subsets II
    78. Subsets
  • 原文地址:https://www.cnblogs.com/lightsong/p/12250733.html
Copyright © 2020-2023  润新知